Heim >Backend-Entwicklung >C++ >Wie kann IEnumerable.Intersect() den Schnittpunkt mehrerer Listen in C# finden?

Wie kann IEnumerable.Intersect() den Schnittpunkt mehrerer Listen in C# finden?

Barbara Streisand
Barbara StreisandOriginal
2025-01-15 12:13:44663Durchsuche

How Can IEnumerable.Intersect() Find the Intersection of Multiple Lists in C#?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn