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

Zobacz też