2010-02-09 13 views
5

Na przykład mam listę klientów, z których każdy ma listę zamówień. Teraz chcę uzyskać listę wszystkich klientów z niezapłaconymi zamówieniami (załóżmy, że jest to status 2). Wraz z tą listą klientów chcę mieć również listę niezapłaconych zamówień.Linq to Entities: dodawanie warunku where do relacji podrzędnej

Na przykład mam to:

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

Gdzie i jak mogę dodać warunek, aby zajrzeć do zakonów posiadających status == 2 i jak włączyć te rozkazy z listą klientów?

Odpowiedz

3

inaczej

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

lub

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 mędrzec. Any postawił mnie na dobrej drodze do rozwiązania, dzięki! –

+0

nie ma za co! –

+0

Zauważ, że jeśli potrzebujesz również elementów podrzędnych, które spełniają warunek, 'Any()' nie może być użyte, ponieważ 'Dowolny' z' Zamówienia' ma 'order.status == 2', a następnie ALL' Orders' zostanie wybrany. Przepraszam, jeśli wznowiłem stary post, ale mam problem z podobnym problemem i pomyślałem, że to może być rozwiązanie, ale nie zadziałało. – GigiSan

2

Spróbuj tego:

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

Albo dlaczego nie po prostu to zrobić:

from order in mycontext.Orders 
where order.status == 2 
select order 
Powiązane problemy