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