Partager via


Regroupement de données

Le regroupement consiste à placer des données dans des groupes afin que les éléments de chaque groupe partagent un attribut commun.

L'illustration suivante montre les résultats du regroupement d'une séquence de caractères. La clé de chaque groupe est le caractère.

Opérations de regroupement LINQ

Les méthodes d'opérateur de requête standard qui regroupent des éléments de données sont répertoriées dans la section suivante.

Méthodes

Nom de la méthode

Description

Syntaxe d'expression de requête C#

Syntaxe d'expression de requête Visual Basic

Informations supplémentaires

GroupBy

Regroupe les éléments qui partagent un attribut commun. Chaque groupe est représenté par un objet IGrouping.

group … by

ou

group … by … into …

Group … By … Into …

Enumerable.GroupBy``2

Queryable.GroupBy``2

ToLookup

Insère des éléments dans un Lookup (un dictionnaire de type un-à-plusieurs) basé sur une fonction de sélection de clé.

Non applicable.

Non applicable.

Enumerable.ToLookup``2

Exemple de syntaxe d'expression de requête

L'exemple de code suivant utilise la clause group by dans C# ou la clause Group By dans Visual Basic pour regrouper des entiers dans une liste selon qu'ils sont pairs ou impairs.

        Dim numbers As New System.Collections.Generic.List(Of Integer)(
             New Integer() {35, 44, 200, 84, 3987, 4, 199, 329, 446, 208})

        Dim query = From number In numbers 
                    Group By Remainder = (number Mod 2) Into Group

        Dim sb As New System.Text.StringBuilder()
        For Each group In query
            sb.AppendLine(If(group.Remainder = 0, vbCrLf & "Even numbers:", vbCrLf & "Odd numbers:"))
            For Each num In group.Group
                sb.AppendLine(num)
            Next 
        Next 

        ' Display the results.
        MsgBox(sb.ToString())

        ' This code produces the following output: 

        ' Odd numbers: 
        ' 35 
        ' 3987 
        ' 199 
        ' 329 

        ' Even numbers: 
        ' 44 
        ' 200 
        ' 84 
        ' 4 
        ' 446 
        ' 208
            List<int> numbers = new List<int>() { 35, 44, 200, 84, 3987, 4, 199, 329, 446, 208 };

            IEnumerable<IGrouping<int, int>> query = from number in numbers
                                                     group number by number % 2;

            foreach (var group in query)
            {
                Console.WriteLine(group.Key == 0 ? "\nEven numbers:" : "\nOdd numbers:");
                foreach (int i in group)
                    Console.WriteLine(i);
            }

            /* This code produces the following output:

                Odd numbers:
                35
                3987
                199
                329

                Even numbers:
                44
                200
                84
                4
                446
                208
            */

Voir aussi

Tâches

Comment : créer un groupe imbriqué (Guide de programmation C#)

Comment : regrouper des fichiers par extension (LINQ)

Comment : regrouper les résultats d'une requête (Guide de programmation C#)

Comment : effectuer une sous-requête sur une opération de regroupement (Guide de programmation C#)

Comment : fractionner un fichier en plusieurs fichiers à l'aide de groupes (LINQ)

Référence

group, clause (Référence C#)

Group By, clause (Visual Basic)

System.Linq

Concepts

Vue d'ensemble des opérateurs de requête standard