2016-05-26 19 views
2

Ich habe zwei Klassen:Where-Klausel der Liste Eigenschaft

public class Customer 
{ 
    public string FirstName { get; set; } 

    public string LastName { get; set; } 

    public List<Product> Product { get; set; } 
} 

public class Product 
{ 
    public string ProductNumber { get; set; } 

    public string ProductColor { get; set; } 
} 

ich eine Klausel erstellen möchten, auf Eigenschaft Product (Product.ProductColor == "") Ich tun:

c.Where(x => x.Product.????? == "11").Select(x => x).ToList(); 

Wie dies tun?

+0

alle Kunden, die einen bestimmten ProductColor zum Beispiel haben –

Antwort

3

Ich nehme an, Sie wollen Kunden finden, die ein Produkt mit Nummer haben 11. Wenn ja, können Sie Funktion Any:

var result = c 
    .Where(x => x.Product.Any(p => p.ProductNumber == "11")) 
    .ToList(); 

Der Code-Filter nur die Kunden, die mindestens ein Produkt haben, das die Bedingung ProductNumber == "11"

Oder wenn Sie Kunden finden wollen, die dann bestimmte Farbe haben verwenden unterschiedliche Ausdruck:

var result = c 
    .Where(x => x.Product.Any(p => p.ProductColor == "Color")) 
    .ToList(); 
2

Da Product (die wirklich sollte Products benannt sein) ist auch eine Sammlung, müssten Sie in diese Sammlung Drilldown. Zum Beispiel, wenn Sie alle Customer s aus einer Liste von Kunden wollen, wo jede Produktfarbe "11" ist, sieht es vielleicht so aus:

customers.Where(c => c.Product.Any(p => p.ProductColor == "11")) 
Verwandte Themen