首頁 > 後端開發 > C++ > 如何使用 .Except() 找出 C# 中自訂物件清單之間的差異?

如何使用 .Except() 找出 C# 中自訂物件清單之間的差異?

Mary-Kate Olsen
發布: 2025-01-23 00:59:10
原創
412 人瀏覽過

How Can I Use .Except() to Find Differences Between Lists of Custom Objects in C#?

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板