Mit LINQ alle Schlüssel aus einer Sammlung finden, die nicht in einer anderen liegen?

8

Ich versuche, alle Schlüssel in einem Wörterbuch zu finden, die nicht in einem anderen Wörterbuch sind. Natürlich kann ich dies mit einer verschachtelten Schleife tun, aber ich versuche gerade, LINQ zu lernen, und ich frage mich, ob ich es benutzen könnte, um diese Aufgabe zu erledigen?

Folgendes habe ich bisher:

%Vor%

Irgendeine Idee, was anstelle der Fragezeichen (oder vielleicht anstelle der gesamten where-Klausel) gehen sollte?

    
Sonny Boy 15.07.2010, 21:07
quelle

5 Antworten

11

Sie können:

%Vor%

Die Methode Except() entspricht im Wesentlichen der Methode minus Operationen in SQL - es gibt alle Elemente aus der ersten Sammlung zurück, mit Ausnahme der Elemente in der zweiten. Da Wörterbücher ihre Schlüssel offen legen, können Sie ihren Unterschied auf diese Weise berechnen.

Der Operator Except() verwendet die Standardgleichheit für den Typ, aber es gibt auch eine Überladung, mit der Sie Ihren eigenen IEqualityComparer angeben können, um die Semantik des Vergleichs von Werten zu überschreiben. In Ihrem Beispiel brauchen Sie das wahrscheinlich nicht - aber es ist schön, es dort zu wissen.

    
LBushkin 15.07.2010, 21:10
quelle
2
%Vor%     
Aren 15.07.2010 21:10
quelle
1
%Vor%

(Aber LBuskins Antwort ist viel besser)

    
Ian Henry 15.07.2010 21:11
quelle
0

Sehen Sie sich die Erweiterungsmethode Except an. HTH.

    
andyp 15.07.2010 21:12
quelle
0

Wenn Sie die Abfragesyntax verwenden wollten, würde ich etwas ähnliches tun:

%Vor%     
Kirk 15.07.2010 23:27
quelle

Tags und Links