我有两个班级:
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();
这是怎么做到的?
答案 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"))