首页 >后端开发 >C++ >C# 中 IEnumerable.Intersect() 如何查找多个列表的交集?

C# 中 IEnumerable.Intersect() 如何查找多个列表的交集?

Barbara Streisand
Barbara Streisand原创
2025-01-15 12:13:44663浏览

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

利用 IEnumerable.Intersect() 在 C# 中查找多个列表的交集

在 C# 中,可以使用 IEnumerable.Intersect() 高效地查找多个列表的公共元素。

问题描述

假设您有一组列表,需要找到它们的交集元素。例如:

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

任务是使用 IEnumerable.Intersect() 来实现这个交集查找。

解决方案

为了对多个列表执行交集运算,可以迭代地使用 IEnumerable.Intersect()。使用 foreach 循环,首先计算前两个列表的交集,然后将结果与第三个列表求交集,以此类推,直到处理完所有列表。

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

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

此解决方案简单易行。

性能注意事项

根据列表的数量和大小,此解决方案的性能可能会有差异。对于大型数据集,建议使用更优化的方案,例如使用 HashSet

以上是C# 中 IEnumerable.Intersect() 如何查找多个列表的交集?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn