Clausola Group By (Visual Basic)

Raggruppa gli elementi di un risultato della query. Può essere usata anche per applicare funzioni di aggregazione a ogni gruppo. L'operazione di raggruppamento è basata su una o più chiavi.

Sintassi

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

Parti

  • listField1, listField2

    facoltativo. Uno o più campi della variabile o delle variabili di query che identificano in modo esplicito i campi da includere nel risultato raggruppato. Se non sono specificati campi, tutti i campi della variabile o delle variabili di query vengono inclusi nel risultato raggruppato.

  • keyExp1

    Obbligatorio. Espressione che identifica la chiave da usare per determinare i gruppi di elementi. È possibile specificare più di una chiave per specificare una chiave composta.

  • keyExp2

    facoltativo. Uno o più tasti aggiuntivi che vengono combinati con keyExp1 per creare una chiave composta.

  • aggregateList

    Obbligatorio. Una o più espressioni che identificano come vengono aggregati i gruppi. Per identificare un nome di membro per i risultati raggruppati, usare la parola chiave Group , che può essere in uno dei seguenti formati:

    Into Group  
    

    -oppure-

    Into <alias> = Group  
    

    È anche possibile includere funzioni di aggregazione da applicare al gruppo.

Commenti

È possibile usare la clausola Group By per suddividere i risultati di una query in gruppi. Il raggruppamento è basato su una chiave o una chiave composta costituita da più chiavi. Gli elementi associati ai valori della chiave corrispondenti vengono inclusi nello stesso gruppo.

Per identificare il nome del membro che viene usato per fare riferimento al gruppo, usare il parametro aggregateList della clausola Into e la parola chiave Group . È anche possibile includere funzioni di aggregazione nella clausola Into per calcolare i valori per gli elementi raggruppati. Per un elenco di funzioni di aggregazione standard, vedere Aggregate Clause.

Esempio

Nell'esempio di codice seguente viene raggruppato un elenco di clienti in base alla località (paese/area geografica) e viene fornito un conteggio dei clienti in ogni gruppo. I risultati sono ordinati in base al nome del paese/area geografica. I risultati raggruppati vengono ordinati in base al nome della città.

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

Vedi anche