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
Barbara StreisandOriginal
2025-01-03 02:25:38938Durchsuche

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 };

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 };

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

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

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!

Stellungnahme:
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