Group By, clause (Visual Basic)
Regroupe les éléments d'un résultat de requête. Peut aussi être 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.
Syntaxe
Group [ listField1 [, listField2 [...] ] By keyExp1 [, keyExp2 [...] ]
Into aggregateList
Éléments
listField1
,listField2
Optionnel. Un ou plusieurs champs de la ou des variables de requête qui identifient explicitement les champs à inclure dans le résultat groupé. Si aucun champ n’est spécifié, tous les champs de la ou des variables de requête sont inclus dans le résultat groupé.
keyExp1
Obligatoire. Expression qui identifie 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
Optionnel. Une ou plusieurs clés supplémentaires combinées à
keyExp1
pour créer une clé composite.aggregateList
Obligatoire. Une ou plusieurs expressions qui identifient la façon dont les groupes sont agrégés. Pour identifier un nom de membre pour les résultats groupés, utilisez le mot clé
Group
, qui peut prendre l’une des formes suivantes :Into Group
-ou-
Into <alias> = Group
Vous pouvez aussi inclure des fonctions d’agrégation à appliquer au groupe.
Notes
Vous pouvez utiliser la clause Group By
pour décomposer les résultats d’une requête en groupes. Le regroupement est basé sur une clé ou une clé composite constituée de plusieurs clés. Les éléments associés à des valeurs de clé correspondantes sont inclus dans le même groupe.
Utilisez le paramètre aggregateList
de la clause Into
et le mot clé Group
pour identifier le nom de membre servant à référencer le groupe. Vous pouvez aussi inclure des fonctions d’agrégation dans la clause Into
pour calculer les valeurs des éléments groupés. Pour obtenir la liste des fonctions d’agrégation standard, consultez Aggregate Clause.
Exemple
L’exemple de code suivant regroupe une liste de clients en fonction de leur situation (pays/région) et indique le nombre de clients dans chaque groupe. Les résultats sont triés par nom de pays/région. Les résultats groupés sont organisé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