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

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

Barbara Streisand
发布: 2025-01-15 12:13:44
原创
696 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板