Group By (Cláusula, Visual Basic)

Agrupa los elementos de los resultados de una consulta. También se puede usar para aplicar funciones de agregado a cada grupo. La operación de agrupación se basa en una o varias claves.

Sintaxis

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

Partes

  • listField1, listField2

    Opcional. Uno o más campos de la variable o las variables de consulta que identifican explícitamente los campos que se incluirán en el resultado agrupado. Si no se especifica ningún campo, se incluyen todos los campos de la variable o las variables de consulta en el resultado agrupado.

  • keyExp1

    Necesario. Expresión que identifica la clave que se va a usar para determinar los grupos de elementos. Puede especificar más de una clave para especificar una clave compuesta.

  • keyExp2

    Opcional. Uno o más claves adicionales que se combinan con keyExp1 para crear una clave compuesta.

  • aggregateList

    Necesario. Una o más expresiones que identifican cómo se agregan los grupos. Para identificar un nombre de miembro para los resultados agrupados, use la palabra clave Group , que puede estar en cualquiera de los formatos siguientes:

    Into Group  
    

    O bien

    Into <alias> = Group  
    

    También puede incluir funciones de agregado para aplicar al grupo.

Comentarios

Puede usar la cláusula Group By para dividir los resultados de una consulta en grupos. La agrupación se basa en una clave o una clave compuesta formada por varias claves. Los elementos que están asociados con valores de clave coincidentes se incluyen en el mismo grupo.

El parámetro aggregateList de la cláusula Into y la palabra clave Group se usan para identificar el nombre del miembro usado para hacer referencia al grupo. También puede incluir funciones de agregado en la cláusula Into para calcular los valores de los elementos agrupados. Para obtener una lista de las funciones de agregado estándar, consulte Aggregate Clause.

Ejemplo

En el ejemplo de código siguiente se agrupa una lista de clientes según su ubicación (país/región) y se proporciona un recuento de los clientes de cada grupo. Los resultados se ordenan por nombre de país/región. Los resultados agrupados se ordenan por nombre de ciudad.

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

Consulte también