使用 IEnumerable.Intersect() 高效查找 C# 中多个列表的交集
在数据分析和处理领域,查找多个列表的交集是很常见的任务。虽然有多种方法可以解决这个问题,但使用 IEnumerable.Intersect() 方法可以提供一个高效的解决方案。本文探讨如何利用此方法识别和检索多个列表的交集。
在 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() 查找这些列表的交集,我们可以利用以下方法:
<code class="language-csharp">var intersection = listOfLists .Skip(1) .Aggregate( new HashSet<int>(listOfLists.First()), (h, e) => { h.IntersectWith(e); return h; } );</code>
在此解决方案中,我们:
此解决方案提供了一种简洁高效的方法,可以使用 IEnumerable.Intersect() 查找多个列表的交集。它利用 HashSet 的优化功能来处理重复元素并执行快速交集运算。
需要注意的是,listOfLists 应始终包含至少一个列表以初始化交集。如果列表为空,则会引发 ArgumentNullException。
以上是如何在 C# 中使用 IEnumerable.Intersect() 高效查找多个列表的交集?的详细内容。更多信息请关注PHP中文网其他相关文章!