Agrupar datos
Agrupar es la operación de colocar los datos en grupos de manera que los elementos de cada grupo compartan un atributo común.
La ilustración siguiente muestra los resultados de agrupar una secuencia de caracteres.La clave de cada grupo es el carácter.
Los métodos de operador de consulta estándar que agrupan los elementos de datos se enumeran en la sección siguiente.
Métodos
Nombre del método |
Descripción |
Sintaxis de las expresiones de consulta de C# |
Sintaxis de las expresiones de consulta de Visual Basic |
Más información |
---|---|---|---|---|
GroupBy |
Agrupa los elementos que comparten un atributo común.Cada grupo se representa mediante un objeto IGrouping<TKey, TElement>. |
group … by O bien group … by … into … |
Group … By … Into … |
|
ToLookup |
Inserta elementos en un objeto Lookup<TKey, TElement> (diccionario uno a varios) según una función del selector de claves. |
No es aplicable |
No es aplicable |
Ejemplo de sintaxis de expresiones de consulta
En el ejemplo de código siguiente se usa la cláusula group by en C# o la cláusula Group By en Visual Basic para agrupar los enteros en una lista en función de si son pares o impares.
Dim numbers As New System.Collections.Generic.List(Of Integer)(
New Integer() {35, 44, 200, 84, 3987, 4, 199, 329, 446, 208})
Dim query = From number In numbers
Group By Remainder = (number Mod 2) Into Group
Dim sb As New System.Text.StringBuilder()
For Each group In query
sb.AppendLine(If(group.Remainder = 0, vbCrLf & "Even numbers:", vbCrLf & "Odd numbers:"))
For Each num In group.Group
sb.AppendLine(num)
Next
Next
' Display the results.
MsgBox(sb.ToString())
' This code produces the following output:
' Odd numbers:
' 35
' 3987
' 199
' 329
' Even numbers:
' 44
' 200
' 84
' 4
' 446
' 208
List<int> numbers = new List<int>() { 35, 44, 200, 84, 3987, 4, 199, 329, 446, 208 };
IEnumerable<IGrouping<int, int>> query = from number in numbers
group number by number % 2;
foreach (var group in query)
{
Console.WriteLine(group.Key == 0 ? "\nEven numbers:" : "\nOdd numbers:");
foreach (int i in group)
Console.WriteLine(i);
}
/* This code produces the following output:
Odd numbers:
35
3987
199
329
Even numbers:
44
200
84
4
446
208
*/
Vea también
Tareas
Cómo: Crear grupos anidados (Guía de programación de C#)
Cómo: Agrupar archivos por extensión (LINQ)
Cómo: Agrupar los resultados de consultas (Guía de programación de C#)
Cómo: Realizar una subconsulta en una operación de agrupación (Guía de programación de C#)
Cómo: Dividir un archivo en varios mediante el uso de grupos (LINQ)
Referencia
group (Cláusula, Referencia de C#)
Group By (Cláusula, Visual Basic)