¿Le resultó útil esta página?
Sus comentarios sobre este contenido son muy importantes. Háganos saber su opinión.
¿Tiene comentarios adicionales?
Caracteres restantes: 1500
Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Enumerable.GroupBy<TSource, TKey, TElement, TResult> (Método) (IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>, Func<TKey, IEnumerable<TElement>, TResult>)

Agrupa los elementos de una secuencia según una función del selector de claves especificada y crea un valor de resultado a partir de cada grupo y su clave. Los elementos de cada grupo se proyectan utilizando una función determinada.

Espacio de nombres:  System.Linq
Ensamblado:  System.Core (en System.Core.dll)

public static IEnumerable<TResult> GroupBy<TSource, TKey, TElement, TResult>(
	this IEnumerable<TSource> source,
	Func<TSource, TKey> keySelector,
	Func<TSource, TElement> elementSelector,
	Func<TKey, IEnumerable<TElement>, TResult> resultSelector
)

Parámetros de tipo

TSource

Tipo de los elementos de source.

TKey

Tipo de la clave devuelta por keySelector.

TElement

Tipo de los elementos de cada IGrouping<TKey, TElement>.

TResult

Tipo del valor de resultado devuelto por resultSelector.

Parámetros

source
Tipo: System.Collections.Generic.IEnumerable<TSource>
IEnumerable<T> cuyos elementos se van a agrupar.
keySelector
Tipo: System.Func<TSource, TKey>
Función para extraer la clave de cada elemento.
elementSelector
Tipo: System.Func<TSource, TElement>
Función que asigna cada elemento de origen a un elemento de IGrouping<TKey, TElement>.
resultSelector
Tipo: System.Func<TKey, IEnumerable<TElement>, TResult>
Función que va a crear un valor de resultado a partir de cada grupo.

Valor devuelto

Tipo: System.Collections.Generic.IEnumerable<TResult>
Colección de elementos de tipo TResult donde cada elemento representa una proyección sobre un grupo y su clave.

Nota sobre el uso

En Visual Basic y C#, se puede llamar a este método como a un método de instancia en cualquier objeto de tipo IEnumerable<TSource>. Cuando emplee la sintaxis del método de instancia para llamar a este método, omita el primer parámetro. Para obtener más información, vea Métodos de extensión (Visual Basic) o Métodos de extensión (Guía de programación de C#).

En la sintaxis de las expresiones de consulta, una cláusula group by (Visual C#) o Group By Into (Visual Basic) se convierte en una invocación de GroupBy.

En el ejemplo de código siguiente se muestra cómo utilizar GroupBy<TSource, TKey, TElement, TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>, Func<TKey, IEnumerable<TElement>, TResult>) para agrupar los elementos proyectados de una secuencia y, a continuación, proyectar una secuencia de resultados de tipo TResult.


            class Pet
            {
                public string Name { get; set; }
                public double Age { get; set; }
            }

            public static void GroupByEx4()
            {
                // Create a list of pets.
                List<Pet> petsList =
                    new List<Pet>{ new Pet { Name="Barley", Age=8.3 },
                                   new Pet { Name="Boots", Age=4.9 },
                                   new Pet { Name="Whiskers", Age=1.5 },
                                   new Pet { Name="Daisy", Age=4.3 } };

                // Group Pet.Age values by the Math.Floor of the age.
                // Then project an anonymous type from each group
                // that consists of the key, the count of the group's
                // elements, and the minimum and maximum age in the group.
                var query = petsList.GroupBy(
                    pet => Math.Floor(pet.Age),
                    pet => pet.Age,
                    (baseAge, ages) => new
                    {
                        Key = baseAge,
                        Count = ages.Count(),
                        Min = ages.Min(),
                        Max = ages.Max()
                    });

                // Iterate over each anonymous type.
                foreach (var result in query)
                {
                    Console.WriteLine("\nAge group: " + result.Key);
                    Console.WriteLine("Number of pets in this age group: " + result.Count);
                    Console.WriteLine("Minimum age: " + result.Min);
                    Console.WriteLine("Maximum age: " + result.Max);
                }

                /*  This code produces the following output:

                    Age group: 8
                    Number of pets in this age group: 1
                    Minimum age: 8.3
                    Maximum age: 8.3

                    Age group: 4
                    Number of pets in this age group: 2
                    Minimum age: 4.3
                    Maximum age: 4.9

                    Age group: 1
                    Number of pets in this age group: 1
                    Minimum age: 1.5
                    Maximum age: 1.5
                */
            }



.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

.NET para aplicaciones de Windows Phone

Compatible con: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft