Compartir a través de


Cómo: Agrupar un grupo (Guía de programación de C#)

Actualización: noviembre 2007

En el ejemplo siguiente se muestra cómo crear grupos anidados en una expresión de consulta LINQ.

Ejemplo

private static void QueryNestedGroups()
{
    var queryNestedGroups =
        from student in students
        group student by student.Year into newGroup1
        from newGroup2 in
            (from student in newGroup1
             group student by student.LastName)
        group newGroup2 by newGroup1.Key;

    // Three nested foreach loops are required to iterate 
    // over all elements of a grouped group. Hover the mouse 
    // cursor over the iteration variables to see their actual type.
    foreach (var outerGroup in queryNestedGroups)
    {
        Console.WriteLine("DataClass.Student Level = {0}", outerGroup.Key);
        foreach (var innerGroup in outerGroup)
        {
            Console.WriteLine("\tNames that begin with: {0}", innerGroup.Key);
            foreach (var innerGroupElement in innerGroup)
            {
                Console.WriteLine("\t\t{0} {1}", innerGroupElement.LastName, innerGroupElement.FirstName);
            }
        }
    }
}

Observe que se requieren tres bucles foreach anidados para procesar una iteración en los elementos internos de un grupo anidado.

Compilar el código

Este ejemplo contiene referencias a objetos definidos en la aplicación de ejemplo del tema Cómo: Realizar una consulta en una colección de objetos (Guía de programación de C#). Para compilar y ejecutar este método, péguelo en la clase StudentClass de esa aplicación y agregue una llamada a éste desde el método Main.

Cuando adapte este método a su propia aplicación, recuerde que LINQ requiere la versión 3.5 de .NET Framework y que el proyecto debe contener una referencia a System.Core.dll y una directiva using para System.Linq. Los tipos LINQ to SQL, LINQ to XML y LINQ to DataSet requieren directivas using y referencias adicionales. Para obtener más información, vea Cómo: Crear un proyecto con LINQ.

Vea también

Conceptos

Expresiones de consultas con LINQ (Guía de programación de C#)