Group By (Cláusula, Visual Basic)

Actualización: noviembre 2007

Agrupa los elementos de un resultado de 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

Partes

  • 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
    Necesario. 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
    Necesario. 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
    

    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

Conceptos

Introducción a LINQ en Visual Basic

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)

Otros recursos

Consultas (Visual Basic)