我需要按子集合的属性值过滤父项。 我正在做这样的事情:
var results = (from c in db.Customers where
c.Orders.Any(o => o.Status = (int)Status.Ordered)
select c;
没关系,但现在我需要过滤2个值,即获取所有具有BOTH值的chilren记录的父记录:
var results = (from c in db.Customers where
c.Orders.Any(o => o.Status == (int)Status.Ordered) && (o.Status == (int).Shipped))
select c;
尝试像这样明显的东西是行不通的。
答案 0 :(得分:2)
当然它不起作用。您正在按满足不可能条件的订单进行过滤。你说的是:“给我所有状态等于Ordered AND 等于同时发货的订单”。难怪没有这样的订单。 : - )
如果您希望所有同时拥有订单和已发货订单的客户,您别无选择,只能使用Any
两次:
var results = (from c in db.Customers where
c.Orders.Any(o => o.Status == (int)Status.Ordered) )
&&
c.Orders.Any(o => o.Status == (int)Status.Shipped) )
select c;