Maison >développement back-end >C++ >Comment LINQ peut-il regrouper efficacement les données et compter les occurrences au sein de chaque groupe ?

Comment LINQ peut-il regrouper efficacement les données et compter les occurrences au sein de chaque groupe ?

DDD
DDDoriginal
2025-01-22 00:41:08301parcourir

How Can LINQ Efficiently Group Data and Count Occurrences Within Each Group?

Agrégation et regroupement de données LINQ : explication détaillée des méthodes efficaces

LINQ (Language Integrated Query) offre un moyen puissant et concis d'interroger et de manipuler des données dans une variété de scénarios. L'une des tâches courantes consiste à regrouper les données en fonction de critères spécifiques et à compter le nombre d'occurrences dans chaque groupe.

Utilisation de LINQ pour le regroupement et le comptage de données

Supposons qu'il existe un ensemble de données nommé UserInfo, contenant des champs tels que nom, métrique, jour et autre_métrique. Pour trier par valeur de métrique et obtenir le nombre de métriques, vous pouvez utiliser la syntaxe LINQ suivante :

<code class="language-csharp">var groupMetrics = 
    from info in data // 从数据源开始
    group info by info.metric into grp // 按'metric'字段分组
    select new { Key = grp.Key, Count = grp.Count() }; // 选择键和计数</code>

Cette requête effectue les opérations suivantes :

  1. La clause GroupBy regroupe les objets UserInfo en fonction de valeurs métriques pour générer une série de groupes.
  2. La clause Select projette chaque regroupement dans un type anonyme, qui possède deux propriétés : Key (représentant la valeur de la métrique) et Count (représentant le nombre d'occurrences).
  3. La clause finale OrderBy trie les résultats par ordre croissant par valeur métrique.

Après avoir exécuté cette requête, vous obtiendrez une liste contenant les valeurs de métriques et leurs décomptes correspondants, fournissant ainsi un résumé de la distribution des métriques au sein de l'ensemble de données.

Résultats de regroupement personnalisés

La solution ci-dessus utilise des types anonymes pour construire des résultats groupés. Cependant, vous pouvez également définir une classe personnalisée pour représenter des données groupées, vous donnant ainsi plus de contrôle sur le format de sortie.

Autres solutions

Une alternative utilisant LINQ to SQL est mentionnée dans la question d'origine :

<code class="language-csharp">var pl = from r in info
         orderby r.metric    
         group r by r.metric into grp
         select new { key = grp.Key, cnt = grp.Count()};</code>

Bien que les deux solutions atteignent l'objectif de regrouper par métrique et de compter les occurrences, la syntaxe LINQ to SQL est spécifiquement conçue pour interroger une base de données, tandis que la syntaxe LINQ pure peut être appliquée à toute collection énumérée d'objets UserInfo. La méthode que vous choisissez dépend du contexte et de la source de données avec laquelle vous travaillez.

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!

Déclaration:
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