Ich frage mich, ob Linq eine Methode hat, um zu überprüfen, ob zwei Sammlungen mindestens ein einzelnes Element gemeinsam haben. Ich würde so etwas erwarten:Suchen Sie nach einem Element in zwei Sammlungen
var listA = new List<int>() { some numbers };
var listB = new List<int>() { some numbers, potentially also in list A };
bool hasSameElements = listA.hasMatchingElements(listB);
Gibt es es in Linq oder sollte ich eine benutzerdefinierte Methode dafür schreiben?
Ich kenne die Intersect-Methode, aber ergibt dies nicht die gesamte Schnittmenge? Ich bin nur daran interessiert, zu überprüfen, ob sich die beiden Kollektionen überschneiden, was dazu führt, dass das gesamte Set wie eine Verschwendung erscheint, besonders bei größeren Sammlungen.
'Intersect' liefert nur so viele Elemente wie gewünscht. Wenn Sie es mit 'Any' oder' FirstOrDefault' verfolgen, oder eine 'foreach' machen und die erste Iteration unterbrechen, wird nur das _first_ Element gefunden, das in beiden Listen existiert (falls vorhanden) - es wird nicht stören finde den Rest. – Rawling
Beachten Sie jedoch, dass die 'Intersect'-Operation _eine_ der beiden Sequenzen _completely_ read erfordert, bevor das erste Element ausgegeben werden kann. Wenn einer Ihrer Eingänge unendlich ist, stellen Sie sicher, dass nicht der Eingang vollständig verbraucht wird. Beachten Sie, dass [die Spezifikation] (http://msdn.microsoft.com/en-us/library/bb460136.aspx) für 'Intersect' _lies_ darüber, wie es funktioniert. – Rawling