Group By (Cláusula, Visual Basic)

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

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

Elementos

Término

Definición

listField1, listField2

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

keyExp1

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

keyExp2

Opcional.Una o varias claves adicionales que se combinan con keyExp1 para crear una clave compuesta.

aggregateList

Obligatorio.Una o varias 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 tener cualquiera de estos dos formatos:

Into Group

O bien

Into <alias> = Group

También puede incluir las funciones de agregado que se van a aplicar al grupo.

Comentarios

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

Use el parámetro aggregateList de la cláusula Into y la palabra clave Group para identificar el nombre de miembro que se utiliza 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, vea Aggregate (Cláusula, Visual Basic).

Ejemplo

En el ejemplo de código siguiente se agrupa una lista de clientes basándose en su ubicación (país) y se cuenta el número de clientes en cada grupo.Los resultados se ordenan por el nombre del país.Los resultados agrupados se ordenan por el nombre de la 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

Vea también

Referencia

Select (Cláusula, Visual Basic)

From (Cláusula, Visual Basic)

Order By (Cláusula, Visual Basic)

Aggregate (Cláusula, Visual Basic)

Group Join (Cláusula, Visual Basic)

Conceptos

Introducción a LINQ en Visual Basic

Otros recursos

Consultas de Visual Basic