2009-03-09 29 views
5

Tôi có hai bảng trong một Tập dữ liệu XML. T1, T2. Mỗi bảng có một cột ID.Cần trợ giúp về Đối diện với Tham gia bên trong Truy vấn bằng LINQ

T1 có một danh sách khách hàng T2 có một danh sách các đơn đặt hàng

Tôi muốn xây dựng một truy vấn LINQ trả về chỉ ID của khách hàng mà không có đơn đặt hàng. Nói cách khác, ID khách hàng không tồn tại trong bảng T2.

Ồ, tôi đang sử dụng C#

Cảm ơn!

Trả lời

6

Tôi nghĩ rằng điều này sẽ làm việc (xin thích ứng với DataSet của bạn):

var query = from c in T1 
      where !(from o in T2 select o.CustomerID) 
      .Contains(c.CustomerID) 
      select c; 
+0

Wow - Thật đơn giản! Cảm ơn sự giúp đỡ – Rick

1

Bạn chỉ cần cho chúng tôi một mệnh đề where và tất cả:

T1.Where(item1 => T2.All(item2 => item1.ID != item2.ID)); 
+0

Dường như điều đó cũng đã hoạt động! Cảm ơn đã giúp đỡ. – Rick

7

này yêu cầu một bên ngoài tham gia và kiểm tra trên null.

var result = from c in Customers 
      join d in Details on d.CustomerID equals c.ID into g 
      where !g.Any() 
      select c; 
+0

Điều này dường như nhanh hơn câu trả lời được chấp nhận – Stefanvds

Các vấn đề liên quan