列表中的 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"))
我有两个 类 :
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"))