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