Ich habe eine Liste von Listen, für die ich den Schnittpunkt finden möchte:
var list1 = new List<int>() { 1, 2, 3 };
var list2 = new List<int>() { 2, 3, 4 };
var list3 = new List<int>() { 3, 4, 5 };
var listOfLists = new List<List<int>>() { list1, list2, list3 };
// expected intersection is List<int>() { 3 };
Gibt es eine Möglichkeit, dies mit IEnumerable.Intersect () zu tun?
EDIT: Ich hätte klarer sein sollen: Ich habe wirklich eine Liste von Listen, ich weiß nicht, wie viele es geben wird, die drei Listen oben waren nur ein Beispiel, was ich habe, ist tatsächlich eine IEnumerable<IEnumerable<SomeClass>>
LÖSUNG
Vielen Dank für alle tollen Antworten. Es stellte sich heraus, dass es vier Möglichkeiten gab, dies zu lösen: Liste + Aggregat (@Marcel Gosselin), Liste + foreach (@JaredPar, @Gabe Moothart), HashSet + Aggregat (@jesperll) und HashSet + foreach (@Tony the Pony). Ich habe einige Leistungstests für diese Lösungen durchgeführt (unterschiedliche Anzahl von Listen , Anzahl von Elementen in jeder Liste und maximale Größe für Zufallszahlen .
Es stellt sich heraus, dass das HashSet in den meisten Situationen eine bessere Leistung als die Liste aufweist (außer bei großen Listen und kleinen Zufallszahlen, da es sich vermutlich um HashSet handelt). Ich konnte keinen wirklichen Unterschied zwischen der foreach-Methode und dem Aggregat feststellen Methode (die foreach-Methode ist etwas besser.)
Für mich ist die Aggregatmethode wirklich ansprechend (und ich gehe davon als akzeptierte Antwort aus), aber ich würde nicht sagen, dass es die am besten lesbare Lösung ist. Nochmals vielen Dank an alle!