Maison >développement back-end >C++ >Comment IEnumerable.Intersect() peut-il trouver l'intersection de plusieurs listes en 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!