list属性上的Where子句

时间:2016-05-26 17:42:39

标签: c# linq where-clause

我有两个班级:

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; }
}

我想在属性ProductProduct.ProductColor == "")上创建一个子句:

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

这是怎么做到的?

2 个答案:

答案 0 :(得分:3)

我假设你想找到拥有11号产品的客户。如果是这样,你可以使用函数Any

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

该代码仅过滤那些至少有一个产品满足条件ProductNumber == "11"

的客户

或者,如果您想找到具有特定颜色的客户,请使用不同的表达式:

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

答案 1 :(得分:2)

由于Product(其中真的应该命名为Products)也是一个集合,因此您必须深入了解该集合。例如,如果您想要任何产品颜色为Customer的客户列表中的所有"11",则可能如下所示:

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