Maison > développement back-end > C++ > Comment LINQ peut-il regrouper les données et compter les occurrences de manière efficace ?

Comment LINQ peut-il regrouper les données et compter les occurrences de manière efficace ?

Mary-Kate Olsen
Libérer: 2025-01-22 00:46:10
original
646 Les gens l'ont consulté

How Can LINQ Group Data and Count Occurrences Efficiently?

Exploitez LINQ pour regrouper et compter efficacement les données

LINQ (Language Integrated Query) en C# fournit un moyen puissant de manipuler et d'interroger des données. Dans les situations où vous devez regrouper et compter des ensembles de données, LINQ fournit une solution concise et efficace.

Supposons que nous ayons un ensemble de données contenant les utilisateurs et leurs métriques et dates associées :

<code>UserInfo(姓名, 指标, 日期, 其他指标)

数据:
joe  1 2011/01/01 5
jane 0 2011/01/02 9
john 2 2011/01/03 0
jim  3 2011/01/04 1
jean 1 2011/01/05 3
jill 2 2011/01/06 5
jeb  0 2011/01/07 3
jenn 0 2011/01/08 7</code>
Copier après la connexion

Notre objectif est d'obtenir un tableau, regroupé par ordre d'indicateur (0, 1, 2, 3...), et d'afficher le nombre total d'occurrences de chaque indicateur.

Regroupement et comptage à l'aide de LINQ

Pour y parvenir en utilisant LINQ, nous pouvons utiliser les méthodes 'GroupBy' et 'Select' :

<code>foreach(var line in data.GroupBy(info => info.metric)
                        .Select(group => new { 
                             Metric = group.Key, 
                             Count = group.Count() 
                        })
                        .OrderBy(x => x.Metric))
{
     Console.WriteLine("{0} {1}", line.Metric, line.Count);
}</code>
Copier après la connexion

Instructions :

  1. La méthode 'GroupBy' est appliquée à l'ensemble de données, en regroupant selon l'attribut 'metric'. Cela produira une séquence de groupes, chaque groupe contenant des éléments avec la même valeur « métrique ».
  2. La méthode 'Select' permet de projeter chaque groupe dans un nouvel objet anonyme avec deux propriétés : 'Metric' (la clé du groupe) et 'Count' (le nombre d'éléments dans le groupe).
  3. La méthode 'OrderBy' trie les objets anonymes par ordre croissant, triés par 'Metric'.
  4. Le résultat est une séquence d'objets anonymes, chaque objet représentant une métrique et son décompte.

Sortie :

<code>0 3
1 2
2 2
3 1</code>
Copier après la connexion

Une autre façon

Bien que la solution LINQ fournie soit efficace, elle pourrait être encore simplifiée :

<code>var result = data.GroupBy(info => info.metric)
                 .Select(group => new { 
                      Metric = group.Key, 
                      Count = group.Count() 
                 })
                 .OrderBy(x => x.Metric);</code>
Copier après la connexion

La seule différence ici est qu'au lieu d'utiliser une boucle « foreach » pour parcourir les résultats, nous l'attribuons à une variable appelée « résultat ».

Points clés

  • GroupBy() crée une séquence de groupes.
  • Select() Projette un groupe sur un objet anonyme.
  • Count() renvoie le nombre d'éléments dans le groupe.
  • OrderBy() trie les résultats selon l'attribut spécifié.

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