C#中比較List
在比較兩個List
如果元素順序無關緊要,則在比較之前對兩個清單進行排序是一種直接的方法。這可以使用以下程式碼實現:
<code class="language-csharp">Enumerable.SequenceEqual(list1.OrderBy(t => t), list2.OrderBy(t => t))</code>
或者,為了提高效能並與實作IEquatable
<code class="language-csharp">public static bool ScrambledEquals<T>(IEnumerable<T> list1, IEnumerable<T> list2) { var cnt = new Dictionary<T, int>(); foreach (T s in list1) { if (cnt.ContainsKey(s)) { cnt[s]++; } else { cnt.Add(s, 1); } } foreach (T s in list2) { if (cnt.ContainsKey(s)) { cnt[s]--; } else { return false; } } return cnt.Values.All(c => c == 0); }</code>
如果用作鍵的資料類型預設不支援相等性比較,則可以使用上面函數的另一個版本,該版本將相等性比較器作為參數:
<code class="language-csharp">public static bool ScrambledEquals<T>(IEnumerable<T> list1, IEnumerable<T> list2, IEqualityComparer<T> comparer) { var cnt = new Dictionary<T, int>(comparer); //其余代码保持不变 }</code>
以上是如何在 C# 中有效比較兩個列表物件的內容相等性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!