Objektlisten mit Linq zusammenführen
Das Kombinieren zweier Listen zu einer neuen Liste mit bestimmten Bedingungen kann mithilfe von LINQ-Erweiterungsmethoden erreicht werden. Betrachten wir das folgende Szenario:
class Person { string Name; int Value; int Change; } List<Person> list1; List<Person> list2;
Wir möchten eine neue Liste
Verwendung der Union-Methode
Die Union-Methode in LINQ bietet eine einfache Möglichkeit, zwei Listen zusammenzuführen und Duplikate zu entfernen. Zum Beispiel:
var mergedList = list1.Union(list2).ToList();
Dadurch wird eine neue zusammengeführte Liste erstellt, die sowohl Liste1 als auch Liste2 kombiniert, und alle doppelten Elemente werden ausgeschlossen.
Benutzerdefinierter Vergleich für Equals und GetHashCode
Wenn der Standardvergleich von Objekten basierend auf Equals und GetHashCode unsere Anforderungen nicht erfüllt, müssen wir diese überschreiben Methoden in der Person-Klasse. So machen Sie beispielsweise den Vergleich für die Name-Eigenschaft unabhängig von der Groß-/Kleinschreibung:
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(); }
Verwenden eines benutzerdefinierten Vergleichers
Alternativ können wir einen benutzerdefinierten Vergleicher definieren Klasse, die die IEqualityComparer-Schnittstelle implementiert. Dann können wir diesen Vergleicher zur Union-Methode als zweiten Parameter bereitstellen:
var comparer = new PersonComparer(); var mergedList = list1.Union(list2, comparer).ToList();
Weitere Informationen zu benutzerdefinierten Vergleichern finden Sie in der MSDN-Dokumentation.
Das obige ist der detaillierte Inhalt vonWie kann ich zwei Objektlisten in C# mithilfe von LINQ zusammenführen, Duplikate verarbeiten und benutzerdefinierte Vergleiche durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!