2009-03-09 10 views
5

Ich habe zwei Tabellen in einem XML-Dataset. T1, T2. Jede der Tabellen hat eine ID-Spalte.Brauchen Sie Hilfe mit einem Gegensatz zu Inner Join Abfrage mit LINQ

T1 hat eine Liste von Kunden T2 eine Liste von Aufträgen hat

ich eine LINQ-Abfrage erstellen möchten, die nur die ID der Kunden zurückgibt, die Aufträge nicht haben. Mit anderen Worten Kunden-IDs, die in der T2-Tabelle nicht existieren.

Oh ja, ich bin mit C#

Dank!

Antwort

6

ich denke, das funktioniert (bitte an Ihre Datasets anpassen):

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

Wow - Das war einfach! Danke für die Hilfe – Rick

1

Sie müssen nur uns eine where-Klausel und alle:

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

Sieht aus wie das hätte auch funktioniert! Danke für die Hilfe. – Rick

7

Diese eine äußere erfordert beitreten und einen Scheck auf 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

Dies scheint schneller zu sein als die angenommene Antwort – Stefanvds