2010-02-09 26 views
5

例如,我有一個客戶列表,每個列表都有一個訂單列表。現在,我想要列出所有未付訂單的客戶(假設這是狀態2)。加上那個客戶名單,我想要列出未付訂單。Linq to Entities:將where條件添加到子關係

例如,我有這樣的:

from c in mycontext.Customers.Include("Orders") 
select c 

在哪裏,我怎麼加入到尋找與狀態== 2以及如何將這些訂單的客戶列表訂單狀況?

回答

3

否則

from c in mycontext.Customers.Include("Orders") 
where c.Orders.Any(order => order.status == 2) 
select c 

from c in mycontext.Customers.Include("Orders") 
let newObject = { 
    Customer = c, 
    NotPaidOrders = c.Orders.Where(order => order.status == 2).ToList() 
} 
where newObject.NotPaidOrders.Any() 
select newObject 
+0

在U任何人都已經把我放在瞭解決方案的正確軌道上,謝謝! – 2010-02-10 10:57:55

+0

不客氣! – 2010-02-10 11:04:51

+0

請注意,如果您還需要滿足條件的子實體,則不能使用「Any()」,因爲如果Orders的任何一個有order.status == 2,那麼所有的Orders將被選中。 對不起,如果我恢復了一箇舊帖子,但我正在努力解決類似的問題,並認爲這可能是解決方案,但沒有爲我工作。 – GigiSan 2016-01-26 14:05:30

2

試試這個:

from c in mycontext.Customers.Include("Orders") 
from order in c.Orders 
where order.status == 2 
select order 

或者爲什麼不能簡單地這樣做:

from order in mycontext.Orders 
where order.status == 2 
select order