C# lambda 表达式,子子查询
本文关键字:查询 表达式 lambda | 更新日期: 2023-09-27 17:55:22
我正在尝试查询一个对象层次结构,如下所示:
客户 --订单> IList
&订购 --产品> IList
我的Customer
对象具有订单集合,Order
对象具有产品集合。
我想做的是获得订购特定产品的客户。我将通过product id
查询。在查询结束时,我想获得一个Customer list
。
我试过这个,但没有用。
public ICollection<Customer> GetByParticularProduct(int productId)
{
return allCustomers
.Where(customer => customer.Orders
.Any(order => order.Products
.Any(prod => prod.Id == productId)))
.ToList();
}
我怎样才能度过难关?
如果你的集合可能包含null
,你可以试试这个
public ICollection<Customer> GetByParticularProduct(int productId)
{
return (from cust in allCustomers.Where(x => x != null)
let orders = cust.Orders.Where(x => x != null)
let prods = orders.SelectMany(x => x.Products).Where(x => x != null)
where prods.Any(x => x.Id == productId)
select cust)
.ToList();
}
return allCustomers
.Where(customer => customer.Orders
.Any(order => order.Products
.Any(prod => prod.Id == productId))).ToList();
或
return allCustomers
.Where(customer => customer.Orders
.Any(order => order.ProductId == productId))).ToList();