Maison >développement back-end >C++ >Comment IEnumerable.Intersect() peut-il trouver l'intersection de plusieurs listes en C# ?

Comment IEnumerable.Intersect() peut-il trouver l'intersection de plusieurs listes en C# ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-15 12:13:44661parcourir

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

Utilisez IEnumerable.Intersect() pour trouver l'intersection de plusieurs listes en C#

En C#, vous pouvez utiliser IEnumerable.Intersect() pour rechercher efficacement les éléments communs de plusieurs listes.

Description du problème

Supposons que vous ayez un ensemble de listes et que vous ayez besoin de trouver leur élément d'intersection. Par exemple :

<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>

La tâche consiste à utiliser IEnumerable.Intersect() pour mettre en œuvre cette recherche d'intersection.

Solution

Pour effectuer l'opération d'intersection sur plusieurs listes, utilisez IEnumerable.Intersect() de manière itérative. À l'aide d'une boucle foreach, calculez d'abord l'intersection des deux premières listes, puis coupez le résultat avec la troisième liste, et ainsi de suite jusqu'à ce que toutes les listes aient été traitées.

<code class="language-csharp">// 使用第一个列表初始化交集
var intersection = listOfLists[0].ToHashSet();

// 与其余列表求交集
foreach (var list in listOfLists.Skip(1))
{
    intersection.IntersectWith(list.ToHashSet());
}</code>

Cette solution est simple et facile.

Notes de performances

Les performances de cette solution peuvent varier en fonction du nombre et de la taille des listes. Pour les grands ensembles de données, il est recommandé d'utiliser une solution plus optimisée, comme l'utilisation de HashSet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn