Maison > développement back-end > C++ > Comment LINQ peut-il compter et résumer efficacement les objets en double dans une liste C# ?

Comment LINQ peut-il compter et résumer efficacement les objets en double dans une liste C# ?

Barbara Streisand
Libérer: 2025-01-03 02:25:38
original
960 Les gens l'ont consulté

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

Comptage des doublons avec LINQ et C

Dans le domaine de la manipulation de données, il est souvent nécessaire d'agréger les données en fonction de certains critères. Une telle situation se présente lorsque vous devez compter les doublons dans une liste d'objets. LINQ (Language Integrated Query) offre une solution élégante pour cette tâche.

Problème : résumer les objets en double

Requête initiale :

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 };
Copier après la connexion

Bien que cette requête fournisse un nombre et nom pour chaque doublon, il omet l'ID du jeu. Pour résoudre ce problème, nous devons modifier notre approche.

Solution : regroupement et sélection personnalisés

Regroupement par propriété d'objet :

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 };
Copier après la connexion

En regroupant les objets en fonction de leur nom de jeu propriété, nous regroupons efficacement les objets portant le même nom.

Sélection du premier objet ID :

gameID = g.First().gameID
Copier après la connexion

Étant donné que les objets portant le même nom peuvent avoir des identifiants différents, nous utilisons First() pour récupérer l'ID du premier objet du groupe. Cela garantit que nous avons un identifiant pour chaque nom de jeu unique.

Exemple complet :

Encapsuler la logique ci-dessus dans un extrait de code complété :

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
Copier après la connexion

Maintenant, la requête affichera correctement le nombre, le nom du jeu et l'ID du jeu pour chaque nom de jeu unique, classés par le plus grand nombre de doublons.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal