Duplikate in einer Liste von Objekten mit LINQ zählen
Bei einer gegebenen Liste von Objekten mit eindeutigen Eigenschaften ist die Bestimmung der Anzahl doppelter Eigenschaften eine häufige Anforderung in der Programmierung. Mithilfe der LINQ-Syntax (Language Integrated Query) kann diese Aufgabe effektiv gelöst werden.
Verwendung von GroupBy und OrderBy
Der grundlegende Ansatz besteht in der Verwendung der GroupBy- und OrderBy-Operatoren von LINQ. GroupBy unterteilt die Liste basierend auf einer angegebenen Eigenschaft in Gruppen, während OrderBy die Gruppen in absteigender Reihenfolge nach der Anzahl der Elemente anordnet.
var groupedItems = list.GroupBy(x => x.Property) .Select(x => new { Property = x.Key, Count = x.Count() }); var orderedItems = orderedItems.OrderByDescending(x => x.Count);
Dieser Code gruppiert die Objekte nach der angegebenen Eigenschaft und berechnet die Anzahl innerhalb jeder Gruppe Gruppe und sortiert die Gruppen dann in absteigender Reihenfolge nach Anzahl.
Objektvergleich anpassen
In Fällen, in denen Da den Objekten eine direkt vergleichbare Eigenschaft fehlt, kann ein benutzerdefinierter Vergleicher oder Lambda-Ausdruck definiert werden. Wenn die Objekte beispielsweise eine eindeutige ID-Eigenschaft haben:
var groupedItems = list.GroupBy(x => new { x.Property, x.ID }) .Select(x => new { Property = x.Key.Property, Count = x.Count() });
Umgang mit mehreren Eigenschaften
Um mehrere Eigenschaften für die Gruppierung zu berücksichtigen, kann ein zusammengesetzter Schlüssel verwendet werden:
var groupedItems = list.GroupBy(x => new { x.Property1, x.Property2 }) .Select(x => new { Property1 = x.Key.Property1, Property2 = x.Key.Property2, Count = x.Count() });
Implementierung mit Erweiterungsmethoden
Für mehr Code Prägnanz können Erweiterungsmethoden eingesetzt werden:
public static IEnumerable<T> CountDuplicates<T>(this IEnumerable<T> list, Func<T, object> keySelector) { return list.GroupBy(keySelector) .Select(x => new { Key = x.Key, Count = x.Count() }); }
Diese Erweiterungsmethode bietet eine wiederverwendbare Möglichkeit, Duplikate basierend auf der angegebenen Schlüsselauswahlfunktion zu zählen.
Durch die Nutzung der Leistungsfähigkeit von LINQ und deren Nutzung Mit diesen Techniken können Entwickler Daten mit doppelten Werten in Objektlisten effizient verwalten und analysieren.
Das obige ist der detaillierte Inhalt vonWie kann ich mit LINQ effizient doppelte Eigenschaften in einer Liste von Objekten zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!