Verwenden Sie IEnumerable.Intersect(), um die Schnittmenge mehrerer Listen in C# zu finden
In C# können Sie IEnumerable.Intersect()
verwenden, um gemeinsame Elemente mehrerer Listen effizient zu finden.
Problembeschreibung
Angenommen, Sie haben eine Reihe von Listen und müssen deren Schnittelement finden. Zum Beispiel:
<code class="language-csharp">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 }; // 预期交集为 List<int>() { 3 }</code>
Die Aufgabe besteht darin, mit IEnumerable.Intersect()
diese Kreuzungssuche umzusetzen.
Lösung
Um die Schnittoperation für mehrere Listen auszuführen, verwenden Sie IEnumerable.Intersect()
iterativ. Berechnen Sie mithilfe einer foreach
-Schleife zunächst den Schnittpunkt der ersten beiden Listen, schneiden Sie dann das Ergebnis mit der dritten Liste usw., bis alle Listen verarbeitet wurden.
<code class="language-csharp">// 使用第一个列表初始化交集 var intersection = listOfLists[0].ToHashSet(); // 与其余列表求交集 foreach (var list in listOfLists.Skip(1)) { intersection.IntersectWith(list.ToHashSet()); }</code>
Diese Lösung ist einfach und unkompliziert.
Leistungshinweise
Die Leistung dieser Lösung kann je nach Anzahl und Größe der Listen variieren. Für große Datenmengen wird empfohlen, eine optimiertere Lösung zu verwenden, z. B. HashSet
.
Das obige ist der detaillierte Inhalt vonWie kann IEnumerable.Intersect() den Schnittpunkt mehrerer Listen in C# finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!