Mithilfe von Lambda-Ausdrücken Bäume mit IEnumerable

Ich habe versucht zu lernen, mehr über die Verwendung von Lamba-Ausdruck Bäume und so erstellte ich ein einfaches Beispiel. Hier ist der code, das funktioniert in LINQPad, wenn eingefügt, wie ein C# - Programm.

void Main()
{
    IEnumerable<User> list = GetUsers().Where(NameContains("a"));
    list.Dump("Users");
}

//Methods
public IEnumerable<User> GetUsers()
{
    yield return new User{Name = "andrew"};
    yield return new User{Name = "rob"};
    yield return new User{Name = "chris"};
    yield return new User{Name = "ryan"};
}

public Expression<Func<User, bool>> NameContains(string namePart)
{
    return u => u.Name.Contains(namePart);
}

//Classes
public class User
{
    public string Name { get; set; }
}

Diese Ergebnisse in der folgenden Fehlermeldung:


Der Typ der Argumente für die Methode 'System.Linq -.Enumerable.Wo(System.Sammlungen.Generisches.IEnumerable, System.Func)' kann nicht abgeleitet werden aus der Nutzung. Versuchen Sie, den Typ der Argumente explizit.

Allerdings, wenn ich ersetzen Sie einfach die erste Zeile in main mit dabei:

IEnumerable<User> list = GetUsers().Where(u => u.Name.Contains("a"));

Funktioniert es einwandfrei. Kann mir sagen was ich falsch mache, bitte?

InformationsquelleAutor Loathian | 2010-03-07
Schreibe einen Kommentar