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.

Operaciones de agrupamiento en LINQ

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.

group … by

O bien

group … by … into …

Group … By … Into …

Enumerable.GroupBy``2

Queryable.GroupBy``2

ToLookup

Inserta elementos en un objeto Lookup (diccionario uno a varios) según una función del selector de claves.

No es aplicable

No es aplicable

Enumerable.ToLookup``2

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)

System.Linq

Conceptos

Información general sobre operadores de consulta estándar