利用 .Except() 比較 C# 中的自訂物件清單
在C#開發中,我們經常遇到需要比較和操作清單的場景。一項常見任務是識別一個清單中存在但另一個清單中不存在的唯一元素。 .NET 框架的 .Except()
方法為此提供了一個優雅的解決方案。
使用 .Except() 自訂相等比較
使用自訂物件時,定義相等性至關重要。如果您的 CustomObject
類別已經覆蓋 Equals()
和 GetHashCode()
,或者引用相等就足夠了,則可以直接使用 .Except()
:
<code class="language-csharp">var list3 = list1.Except(list2).ToList();</code>
但是,對於更細緻的相等定義(例如,基於 ID 屬性進行比較),需要實作 IEqualityComparer<T>
:
<code class="language-csharp">public class IdComparer : IEqualityComparer<CustomObject> { // Implement GetHashCode and Equals methods based on ID property... }</code>
然後,使用帶有 .Except()
的自訂比較器:
<code class="language-csharp">var list3 = list1.Except(list2, new IdComparer()).ToList();</code>
解重複條目
.Except()
本身會刪除重複元素。若要在結果清單中保留重複項,請考慮將第二個清單轉換為 HashSet
並採用篩選方法:
<code class="language-csharp">var set2 = list2.ToHashSet(); var list3 = list1.Where(x => !set2.Contains(x)).ToList();</code>
總結
.Except()
方法提供了一種簡單有效的方法來尋找包含自訂物件的兩個清單之間的集合差異。 透過實現自訂相等比較或根據需要處理重複項,您可以使此方法適應不同的比較要求。
以上是如何使用 .Except() 找出 C# 中自訂物件清單之間的差異?的詳細內容。更多資訊請關注PHP中文網其他相關文章!