2010-05-13 11 views
8

Wie würde ich die folgende SQL-Abfrage in eine vergleichbare LINQ-Abfrage übersetzen?Wie schreibe ich eine "Not In" SQL-Abfrage in LINQ?

select * from Dept 
where Id not in (
    Select Id 
    from Employee 
    where Salary > 100); 
+1

Auch ist LinqPad ein handliches Werkzeug, schriftlich zu unterstützen und LINQ-Abfragen testen – CaffGeek

+0

in diesem Fall, dass Sie auch logische Negation verwenden: wo Gehalt von <= 100 –

+0

@ Chad..ya werden versuchen, es nützlich scheint @ CrazyJugglerDrummer Nun, ich versuche etwas anderes, etwas Komplexeres zu tun ... ya aber in diesem Fall würde es:) ... – Vishal

Antwort

15

versuchen, etwas wie folgt aus:

var result = from d in Dept 
      let expensiveEmployeeIds = (from e in Employee.Employees 
             where e.Salary > 100 
             select e.Id) 
      where !expensiveEmployeeIds.Contains(d.Id) 
      select d; 
0

Wie wäre das?

var lowPaidEmps = from d in db.Dept 
        join e in db.Employees on d.Id equals e.Id 
        where e.Salary <= 100 
        select d; 
+2

Das ist nicht logisch gleichwertig. Stellen Sie sich eine Abteilung ohne Mitarbeiter vor (die ursprüngliche Abfrage gibt sie zurück, diese Abfrage nicht). –

+0

Ich bin froh, dass du hast, was du suchst. – Rob

Verwandte Themen