列表中的 Where 子句 属性

Where clause on list property

我有两个 类 :

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

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

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

怎么做?

我假设您想找到拥有编号为 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();

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

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