Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Agrupando datos
LINQ permite agrupar los elementos de una secuencia mediante la cláusula
group, en la sintaxis de consulta, y el método GroupBy(), en la sintaxis basada en
métodos.
1
5.2 by
La palabra clave contextual by se utiliza junto con la cláusula group para especificar
cómo deberían estar agrupados los elementos devueltos.
En el siguiente ejemplo se muestra el uso de la palabra clave contextual by junto con
la cláusula group para especificar que los estudiantes deben agruparse por la primera
letra del apellido de cada estudiante.
5.4 into
La palabra clave contextual into permite crear un identificador temporal que
almacene los grupos generados por una cláusula group para luego poder realizar
operaciones de consulta adicionales sobre cada grupo.
En el siguiente ejemplo se muestra el uso de la palabra clave into para crear un
identificador temporal llamado fruitGroup, el cual permite invocar al método
2
Count() sobre cada grupo para seleccionar solo aquellos que contienen dos o más
palabras.
3
Tal como se puede ver en el ejemplo, puede ordenar los grupos por cualquier
propiedad de la clave.
4
Observe que, en este caso, se necesitan tres bucles foreach anidados para iterar sobre
los elementos internos de un grupo anidado.
5.7 Realizar una subconsulta sobre una operación de
agrupación
En el siguiente ejemplo se muestra cómo crear una consulta que ordene los datos de
origen en grupos y, luego, realice una subconsulta sobre cada grupo
individualmente. La técnica consiste en agrupar los elementos de origen utilizando
una continuación llamada newGroup y luego generar una nueva subconsulta contra
newGroup. Esta subconsulta se ejecuta contra cada nuevo grupo creado por la
consulta externa. Tenga en cuenta que en este ejemplo en particular el resultado final
no es un grupo, sino una secuencia plana de tipos anónimos.
5
Ejemplo 1
En este ejemplo, la expresión booleana evalúa si el puntaje promedio de los
exámenes de un estudiante es mayor a 75. Los resultados se proyectan en un tipo
anónimo porque no es necesario conservar el elemento completo. Tenga en cuenta
que las propiedades del tipo anónimo se convierten en propiedades del miembro Key
y pueden ser accedidas por nombre cuando la consulta es ejecutada.
Ejemplo 2
En el siguiente ejemplo, se utiliza la cláusula group para agrupar los enteros de una
lista según sean pares o impares.
7
Agrupar por una clave compuesta
En el siguiente ejemplo se muestra cómo utilizar un tipo anónimo para encapsular
una clave que contiene múltiples valores.
Utilice un tipo con nombre si debe pasar la variable de consulta a otro método.
Ejemplo 1:
El resultado de la consulta es un tipo IGrouping<K,E> que contiene una propiedad
pública Key de tipo char y una colección IEnumerable<T> que contiene cada
elemento de la agrupación.
El resultado de una cláusula group es una secuencia de secuencias. Por lo tanto, para
acceder a los elementos individuales de cada grupo devuelto, utilice un bucle
foreach anidado dentro del bucle que itera las claves de grupo, tal como se muestra
en el siguiente ejemplo.