Group By — Klauzula (Visual Basic)
Grupuje elementy wyniku zapytania. Można również użyć do stosowania funkcji agregujących do każdej grupy. Operacja grupowania jest oparta na co najmniej jednym kluczu.
Składnia
Group [ listField1 [, listField2 [...] ] By keyExp1 [, keyExp2 [...] ]
Into aggregateList
generatora
listField1
,listField2
Opcjonalny. Co najmniej jedno pole zmiennej kwerendy lub zmiennych, które jawnie identyfikują pola, które mają zostać uwzględnione w zgrupowanym wyniku. Jeśli nie określono żadnych pól, wszystkie pola zmiennej kwerendy lub zmiennych są uwzględniane w pogrupowanych wynikach.
keyExp1
Wymagany. Wyrażenie identyfikujące klucz używany do określania grup elementów. Możesz określić więcej niż jeden klucz, aby określić klucz złożony.
keyExp2
Opcjonalny. Co najmniej jeden dodatkowy klucz połączony z elementem
keyExp1
w celu utworzenia klucza złożonego.aggregateList
Wymagany. Co najmniej jedno wyrażenie identyfikujące sposób agregowania grup. Aby zidentyfikować nazwę elementu członkowskiego dla pogrupowanych wyników, użyj
Group
słowa kluczowego , które może znajdować się w jednej z następujących formularzy:Into Group
— lub —
Into <alias> = Group
Można również uwzględnić funkcje agregujące, które mają być stosowane do grupy.
Uwagi
Możesz użyć klauzuli Group By
, aby podzielić wyniki zapytania na grupy. Grupowanie jest oparte na kluczu lub kluczu złożonym składającym się z wielu kluczy. Elementy skojarzone z pasującymi wartościami klucza są uwzględniane w tej samej grupie.
Parametr klauzuli Into
i Group
słowo kluczowe służy aggregateList
do identyfikowania nazwy elementu członkowskiego używanego do odwołowania się do grupy. Funkcje agregujące można również uwzględnić w klauzuli Into
, aby obliczyć wartości elementów zgrupowanych. Aby uzyskać listę standardowych funkcji agregujących, zobacz Agregacja klauzuli.
Przykład
Poniższy przykład kodu grupuje listę klientów w oparciu o ich lokalizację (kraj/region) i udostępnia liczbę klientów w każdej grupie. Wyniki są uporządkowane według nazwy kraju/regionu. Pogrupowane wyniki są uporządkowane według nazwy miasta.
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