高效率比較大型清單差異的策略
處理大型清單時,比較差異可能非常耗費資源。雖然LINQ的Contains()
方法是一種常見做法,但對於海量資料集而言效率低。更優的方案是利用Except()
方法。
利用Except()方法
Except()
方法作用於IEnumerable
,找出存在於一個清單中但在另一個清單中不存在的元素。透過對兩個清單都套用Except()
,我們可以得到兩個新的清單:
firstNotSecond
:包含第一個清單中但在第二個清單中缺少的元素。 secondNotFirst
:包含第二個清單中但在第一個清單中缺少的元素。 這種方法比使用Contains()
檢查快得多。例如:
<code class="language-csharp">var firstNotSecond = list1.Except(list2).ToList(); var secondNotFirst = list2.Except(list1).ToList();</code>
結果合併
如果需要,可以將結果合併到單一語句中:
<code class="language-csharp">return !firstNotSecond.Any() && !secondNotFirst.Any();</code>
如果兩個輸入清單包含完全相同的元素,則此語句計算結果為true
,否則為false
。
關於重複元素的說明
值得注意的是,Except()
方法處理重複元素的方式與Contains()
方法不同。在原始程式碼中,第一個清單中在第二個清單中不存在的重複元素會被多次報告。然而,Except()
只報告每個重複元素一次。在使用此解決方案時,應考慮這種差異。
以上是如何在 C# 中有效比較兩個海量清單的差異?的詳細內容。更多資訊請關注PHP中文網其他相關文章!