Cláusula Group By (Visual Basic)

Agrupa os elementos de um resultado de consulta. Também pode ser usada para aplicar funções de agregação a cada grupo. A operação de agrupamento é baseada em uma ou mais chaves.

Sintaxe

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

Partes

  • listField1, listField2

    Opcional. Um ou mais campos da variável ou das variáveis de consulta que identificam explicitamente os campos a serem incluídos no resultado agrupado. Se nenhum campo for especificado, todos os campos da variável ou das variáveis de consulta serão incluídos no resultado agrupado.

  • keyExp1

    Obrigatórios. Uma expressão que identifica a chave a ser usada para determinar os grupos de elementos. Você pode especificar mais de uma chave para especificar uma chave composta.

  • keyExp2

    Opcional. Uma ou mais chaves adicionais que são combinadas com keyExp1 para criar uma chave composta.

  • aggregateList

    Obrigatórios. Uma ou mais expressões que identificam como os grupos são agregados. Para identificar um nome de membro para os resultados agrupados, use a palavra-chave Group, que pode estar em qualquer uma das seguintes formas:

    Into Group  
    

    -ou-

    Into <alias> = Group  
    

    Você também pode incluir funções de agregação a serem aplicadas ao grupo.

Comentários

Você pode usar a cláusula Group By para interromper os resultados de uma consulta nos grupos. O agrupamento é baseado em uma chave ou chave composta que consiste em várias chaves. Os elementos associados aos valores de chave correspondentes são incluídos no mesmo grupo.

Use o parâmetro aggregateList da cláusula Into e a palavra-chave Group para identificar o nome do membro usado para fazer referência ao grupo. Você também pode incluir funções de agregação na cláusula Into para calcular valores para os elementos agrupados. Para obter uma lista de funções de agregação padrão, confira Cláusula Aggregate.

Exemplo

O exemplo de código a seguir agrupa uma lista de clientes com base na localização (país/região) e fornece uma contagem dos clientes em cada grupo. Os resultados são ordenados pelo nome de país/região. Os resultados agrupados são ordenados pelo nome da cidade.

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

Confira também