首頁 > 後端開發 > C++ > 如何使用 LINQ 在 C# 中組合兩個 Person 物件清單、處理重複項並計算差異?

如何使用 LINQ 在 C# 中組合兩個 Person 物件清單、處理重複項並計算差異?

Susan Sarandon
發布: 2024-12-29 07:28:09
原創
610 人瀏覽過

How Can I Combine Two Lists of Person Objects in C# Using LINQ, Handling Duplicates and Calculating Differences?

使用LINQ 建立包含轉換值的組合列表

在所呈現的場景中,您有兩個Person 物件列表,並且需要一個新列表結合了這些列表。對於相同的 Person 對象,合併的條目應保留其共用名稱,並擁有 list2 中的值,並且其變更應計算為 (list2.Value - list1.Value)。如果不存在重複,則變更應保持為零。

要達成此目的,請利用 LINQ Union 擴充方法。例如:

var mergedList = list1.Union(list2).ToList();
登入後複製

此操作合併兩個列表,消除重複項。預設情況下,Person 類別中定義的 Equals 和 GetHashCode 方法用於確定物件相等性。對於基於Name 等屬性的自訂比較,請重寫這些方法,如下所示:

public override bool Equals(object obj)
{
    // Check if obj is convertible to Person
    var person = obj as Person;
    return Equals(person);
}

public override int GetHashCode()
{
    return Name.GetHashCode();
}

public bool Equals(Person personToCompareTo)
{
    // Check for null or empty Name
    if (personToCompareTo == null || string.IsNullOrEmpty(personToCompareTo.Name)) return false;
    // Compare Names for equality
    return Name.Equals(personToCompareTo.Name);
}
登入後複製

或者,定義一個實作IEqualityComparer 介面的比較器類,並將其作為Union 方法的第二個參數提供以進行自訂物件比較。有關更多詳細信息,請參閱 https://msdn.microsoft.com/en-us/library/system.collections.iequalitycomparer.aspx。

以上是如何使用 LINQ 在 C# 中組合兩個 Person 物件清單、處理重複項並計算差異?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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