Group By, clause (Visual Basic)

Groupe les éléments d'un résultat de requête. Cette clause peut être également utilisée pour appliquer des fonctions d'agrégation à chaque groupe. L'opération de regroupement est basée sur une ou plusieurs clés.

Group [ listField1 [, listField2 [...] ] By keyExp1 [, keyExp2 [...] ]
  Into aggregateList

Éléments

Terme

Définition

listField1, listField2

Facultatif. Un ou plusieurs champs de la variable de requête (ou des variables) qui identifient explicitement les champs à inclure dans le résultat groupé. Si aucun champ n'est spécifié, tous les champs de la variable ou des variables de requête sont inclus dans le résultat groupé.

keyExp1

Obligatoire. Expression identifiant la clé à utiliser pour déterminer les groupes d'éléments. Vous pouvez spécifier plusieurs clés pour spécifier une clé composite.

keyExp2

Facultatif. Une ou plusieurs clés supplémentaires, combinées avec keyExp1 pour créer une clé composite.

aggregateList

Obligatoire. Une ou plusieurs expressions identifiant la manière dont les groupes sont constitués. Pour identifier un nom de membre pour les résultats groupés, utilisez le mot clé Group, qui peut être dans l'un ou l'autre des formulaires suivants :

Into Group

ou

Into <alias> = Group

Vous pouvez également inclure des fonctions d'agrégation à appliquer au groupe.

Notes

Vous pouvez utiliser la clause Group By pour détailler les résultats d'une requête dans des groupes. Le regroupement est basé sur une clé ou une clé composite qui se compose de plusieurs clés. Les éléments associés aux valeurs de clés correspondantes sont inclus dans le même groupe.

Vous utilisez le paramètre aggregateList de la clause Into et le mot clé Group pour identifier le nom de membre utilisé pour référencer le groupe. Vous pouvez également inclure des fonctions d'agrégation à la clause Into pour calculer des valeurs des éléments groupés. Pour obtenir la liste de fonctions d'agrégation standard, consultez Aggregate, clause (Visual Basic).

Exemple

L'exemple de code suivant groupe une liste de clients sur la base de leur emplacement (pays) et fournit le nombre de clients dans chaque groupe. Les résultats sont classés par nom de pays. Les résultats groupés sont classés par nom de ville.

Public Sub GroupBySample()
  Dim customers = GetCustomerList()

  Dim customersByCountry = From cust In customers
                           Order By cust.City
                           Group By CountryName = cust.Country
                           Into RegionalCustomers = Group, Count()
                           Order By CountryName

  For Each country In customersByCountry
    Console.WriteLine(country.CountryName &
                      " (" & country.Count & ")" & vbCrLf)

    For Each customer In country.RegionalCustomers
      Console.WriteLine(vbTab & customer.CompanyName &
                        " (" & customer.City & ")")
    Next
  Next
End Sub

Voir aussi

Référence

Select, clause (Visual Basic)

From, clause (Visual Basic)

Order By, clause (Visual Basic)

Aggregate, clause (Visual Basic)

Group Join, clause (Visual Basic)

Concepts

Introduction à LINQ dans Visual Basic

Autres ressources

Requêtes (Visual Basic)