Heim > Backend-Entwicklung > C++ > Wie kann LINQ doppelte Objekte in einer C#-Liste effizient zählen und zusammenfassen?

Wie kann LINQ doppelte Objekte in einer C#-Liste effizient zählen und zusammenfassen?

Barbara Streisand
Freigeben: 2025-01-03 02:25:38
Original
960 Leute haben es durchsucht

How Can LINQ Efficiently Count and Summarize Duplicate Objects in a C# List?

Duplikate zählen mit LINQ und C

Im Bereich der Datenmanipulation ist es oft notwendig, Daten basierend auf bestimmten Kriterien zu aggregieren. Eine solche Situation entsteht, wenn Sie Duplikate innerhalb einer Objektliste zählen müssen. LINQ (Language Integrated Query) bietet eine elegante Lösung für diese Aufgabe.

Problem: Zusammenfassen doppelter Objekte

Erste Abfrage:

var q = from x in inventory
                 group x by x into g
                 let count = g.Count()
                 orderby count descending
                 select new { Count = count, gameName = g.Key.gameName, gameID = g.Key.gameID };
Nach dem Login kopieren

Während diese Abfrage eine Anzahl und liefert Geben Sie für jedes Duplikat einen Namen an, die Spiel-ID wird weggelassen. Um dies zu beheben, müssen wir unseren Ansatz ändern.

Lösung: Benutzerdefinierte Gruppierung und Auswahl

Gruppierung nach Objekteigenschaft:

var q = from x in inventory
                 group x by x.gameName into g
                 let count = g.Count()
                 orderby count descending
                 select new { Count = count, gameName = g.Key, gameID = g.First().gameID };
Nach dem Login kopieren

Durch Gruppieren der Objekte basierend auf ihrem Spielnamen Eigenschaft, wir aggregieren effektiv Objekte mit demselben Namen.

Auswählen der ersten Objekte ID:

gameID = g.First().gameID
Nach dem Login kopieren

Da Objekte mit demselben Namen unterschiedliche IDs haben können, verwenden wir First(), um die ID des ersten Objekts in der Gruppe abzurufen. Dadurch wird sichergestellt, dass wir für jeden eindeutigen Spielnamen eine ID haben.

Vollständiges Beispiel:

Einkapselung der obigen Logik in ein vollständiges Code-Snippet:

var inventory = new List<game>();

// ... additional code for populating the inventory list

var q = from x in inventory
                 group x by x.gameName into g
                 let count = g.Count()
                 orderby count descending
                 select new { Count = count, gameName = g.Key, gameID = g.First().gameID };

// ... additional code for displaying the results
Nach dem Login kopieren

Nun die Abfrage zeigt die Anzahl, den Spielnamen und die Spiel-ID für jeden eindeutigen Spielnamen korrekt an, sortiert nach der höchsten Anzahl an Duplikaten.

Das obige ist der detaillierte Inhalt vonWie kann LINQ doppelte Objekte in einer C#-Liste effizient zählen und zusammenfassen?. 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