使用 Linq 合併物件清單
可以使用 LINQ 擴充方法將兩個清單組合成具有特定條件的新清單。讓我們考慮以下場景:
class Person { string Name; int Value; int Change; } List<Person> list1; List<Person> list2;
我們想要建立一個新的 List
使用並集方法
LINQ 中的 Union 方法提供了一種合併兩個清單並刪除重複項的簡單方法。例如:
var mergedList = list1.Union(list2).ToList();
這將建立一個結合了 list1 和 list2 的新 mergedList,並且任何重複的項目都將被排除。
Equals 和GetHashCode 的自訂比較
如果預設基於Equals和GetHashCode的物件比較不能滿足我們的要求,我們需要重寫Person類別中的這些方法。例如,以下是如何使Name 屬性的比較不區分大小寫:
public override bool Equals(object obj) { var person = obj as Person; return Equals(person); } public override int GetHashCode() { return Name.ToLower().GetHashCode(); } public bool Equals(Person personToCompareTo) { return Name.ToLower() == personToCompareTo.Name.ToLower(); }
使用自訂比較器
或者,我們可以定義一個自訂比較器實作IEqualityComparer 介面的類別。然後,我們可以將此比較器作為第二個參數提供給 Union 方法:
var comparer = new PersonComparer(); var mergedList = list1.Union(list2, comparer).ToList();
有關自訂比較器的更多信息,請參閱 MSDN 文件。
以上是如何使用 LINQ 在 C# 中合併兩個物件清單、處理重複項和自訂比較?的詳細內容。更多資訊請關注PHP中文網其他相關文章!