4 Stimmen

NOT IN-Klausel für LINQ?

Ich erstelle eine LINQ-Abfrage und möchte eine NOT IN-Klausel im SQL-Stil haben, um sicherzustellen, dass mein Ergebnis nicht einen der Werte aus einer kommagetrennten Liste enthält.

Ich konnte nicht finden, eine NOT IN-Klausel für LINQ. Bitte schlagen Sie eine Lösung vor.

3voto

satnhak Punkte 8771

Sie müssen ein !contains auf die Sammlung von Objekten anwenden, die Sie ausschließen möchten.

var excluded = new[] { 3, 7, 19, 41 };
var v = from i in Enumerable.Range(0, 100)
        where !excluded.Contains(i)
        select i;

2voto

Aaron Bennett Punkte 3864

Sie benötigen den Operator .Except() set.

var results = list1.Except(list2);

http://blogs.msdn.com/b/charlie/archive/2008/07/12/the-linq-set-operators.aspx http://www.hookedonlinq.com/ExceptOperator.ashx

Hinweis: Sie müssen einen iEqualityComparor implementieren, um die Methode Except mit komplexen Typen verwenden zu können.

1voto

Richard Friend Punkte 15340

Etwa so...

string items = "1,2,3,4";
var subList = items.Split(',');
var result = list.Where(item=>!subList.Contains(item.SomeStringField));

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X