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