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.
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 };
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.
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 };
En regroupant les objets en fonction de leur nom de jeu propriété, nous regroupons efficacement les objets portant le même nom.
gameID = g.First().gameID
É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.
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
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!