Heim >Backend-Entwicklung >C++ >Wie führe ich zwei Listen von Personenobjekten mithilfe von LINQ zusammen und verarbeite Attributaktualisierungen basierend auf der Namensübereinstimmung?
Erstellen Sie eine Liste aus zwei Objektlisten mit Linq
Stellen Sie sich das folgende Szenario vor:
class Person { string Name; int Value; int Change; } List<Person> list1; List<Person> list2;
Das Ziel ist um die beiden Listen zu einer neuen Liste
Lösung:
Die Linq-Methode Union eignet sich perfekt für diese Aufgabe:
var mergedList = list1.Union(list2).ToList();
Dies Der Vorgang führt die beiden Listen zusammen und entfernt Duplikate. Standardmäßig werden die in der Person-Klasse definierten Methoden Equals und GetHashCode aufgerufen. Wenn diese Methoden jedoch nicht überschrieben werden, können sie unsere benutzerdefinierten Objekte möglicherweise nicht effektiv vergleichen (z. B. mithilfe der Name-Eigenschaft zum Vergleich).
Equals und GetHashCode überschreiben:
Um genaue Vergleiche nach Namen zu gewährleisten, überschreiben Sie die Methoden wie folgt:
public override bool Equals(object obj) { var person = obj as Person; return Equals(person); } public override int GetHashCode() { return Name.GetHashCode(); } public bool Equals(Person personToCompareTo) { if (personToCompareTo == null || string.IsNullOrEmpty(personToCompareTo.Name)) return false; return Name.Equals(personToCompareTo.Name); }
Benutzerdefiniert Vergleicher:
Alternativ können Sie einen benutzerdefinierten Vergleicher erstellen, der die IEqualityComparer-Schnittstelle implementiert. Dieser Vergleicher kann als zweites Argument für die Union-Methode bereitgestellt werden. Weitere Informationen zu benutzerdefinierten Vergleichern finden Sie hier: http://msdn.microsoft.com/en-us/library/system.collections.iequalitycomparer.aspx.
Das obige ist der detaillierte Inhalt vonWie führe ich zwei Listen von Personenobjekten mithilfe von LINQ zusammen und verarbeite Attributaktualisierungen basierend auf der Namensübereinstimmung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!