Heim > Backend-Entwicklung > C++ > Wie kann ich mit LINQ effizient doppelte Eigenschaften in einer Liste von Objekten zählen?

Wie kann ich mit LINQ effizient doppelte Eigenschaften in einer Liste von Objekten zählen?

Susan Sarandon
Freigeben: 2024-12-29 09:33:11
Original
706 Leute haben es durchsucht

How Can I Efficiently Count Duplicate Properties in a List of Objects Using LINQ?

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);
Nach dem Login kopieren

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() });
Nach dem Login kopieren

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() });
Nach dem Login kopieren

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() });
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage