2010-02-09 22 views
5

Ví dụ: tôi có danh sách khách hàng có danh sách đơn đặt hàng. Bây giờ, tôi muốn có danh sách tất cả các khách hàng với các đơn đặt hàng chưa thanh toán (giả sử đây là trạng thái 2). Cùng với danh sách khách hàng đó, tôi cũng muốn có danh sách các đơn hàng chưa thanh toán.LINQ to Entities: thêm điều kiện vào mối quan hệ con

Ví dụ tôi có điều này:

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

ở đâu hoặc làm thế nào để tôi thêm các điều kiện để tìm kiếm đơn đặt hàng với tình trạng == 2 và làm thế nào để bao gồm các đơn đặt hàng với danh sách các khách hàng?

Trả lời

3

khác

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

hoặ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

Các u sage of. Bất kỳ đã đưa tôi đi đúng hướng cho một giải pháp, cảm ơn! –

+0

bạn được chào đón! –

+0

Lưu ý rằng bạn cũng cần các thực thể con thỏa mãn điều kiện, 'Bất kỳ()' không thể được sử dụng nếu 'Bất kỳ' của' Đơn hàng' có 'order.status == 2', sau đó TẤT CẢ' Đơn đặt hàng' sẽ được chọn. Xin lỗi nếu tôi tiếp tục một bài đăng cũ, nhưng tôi đang đấu tranh với một vấn đề tương tự và nghĩ rằng đây có thể là giải pháp nhưng không hiệu quả đối với tôi. – GigiSan

2

Hãy thử điều này:

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

Hoặc tại sao không chỉ đơn giản làm điều này:

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