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)
Order By (Cláusula, Visual Basic)
Aggregate (Cláusula, Visual Basic)
Group Join (Cláusula, Visual Basic)