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

Queryable.GroupBy<TSource, TKey> (Método) (IQueryable<TSource>, Expression<Func<TSource, TKey>>)

Agrupa los elementos de una secuencia según una función del selector de claves especificada.

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

public static IQueryable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
	this IQueryable<TSource> source,
	Expression<Func<TSource, TKey>> keySelector
)

Parámetros de tipo

TSource

Tipo de los elementos de source.

TKey

Tipo de la clave devuelta por la función representada en keySelector.

Parámetros

source
Tipo: System.Linq.IQueryable<TSource>
IQueryable<T> cuyos elementos se van a agrupar.
keySelector
Tipo: System.Linq.Expressions.Expression<Func<TSource, TKey>>
Función para extraer la clave de cada elemento.

Valor devuelto

Tipo: System.Linq.IQueryable<IGrouping<TKey, TSource>>
IQueryable<IGrouping<TKey, TSource>> en C# o IQueryable(Of IGrouping(Of TKey, TSource)) en Visual Basic donde cada objeto IGrouping<TKey, TElement> contiene una secuencia de objetos y una 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 IQueryable<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#).

ExcepciónCondición
ArgumentNullException

source o keySelector es null.

Este método tiene al menos un parámetro de tipo Expression<TDelegate> cuyo argumento de tipo es uno de los tipos de Func<T, TResult>. En estos parámetros, puede pasar una expresión lambda y esta se compilará en un objeto Expression<TDelegate>.

El método GroupBy<TSource, TKey>(IQueryable<TSource>, Expression<Func<TSource, TKey>>) genera un objeto MethodCallExpression que representa al propio método GroupBy<TSource, TKey>(IQueryable<TSource>, Expression<Func<TSource, TKey>>) que realiza la llamada como un método genérico construido. A continuación, pasa el objeto MethodCallExpression al método CreateQuery<TElement>(Expression) de la interfaz IQueryProvider representada por la propiedad Provider del parámetro source.

El comportamiento de la consulta que se obtiene como resultado de ejecutar un árbol de expresión que representa al método GroupBy<TSource, TKey>(IQueryable<TSource>, Expression<Func<TSource, TKey>>) que realiza la llamada depende de la implementación del tipo del parámetro source. El comportamiento esperado es que agrupe los elementos de source mediante un valor de clave que se obtiene al invocar keySelector en cada elemento.

En el ejemplo de código siguiente se muestra cómo utilizar GroupBy<TSource, TKey>(IQueryable<TSource>, Expression<Func<TSource, TKey>>) para agrupar los elementos de una secuencia.


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

            public static void GroupByEx1()
            {
                // Create a list of Pet objects.
                List<Pet> pets =
                    new List<Pet>{ new Pet { Name="Barley", Age=8 },
                                   new Pet { Name="Boots", Age=4 },
                                   new Pet { Name="Whiskers", Age=1 },
                                   new Pet { Name="Daisy", Age=4 } };

                // Group the pets using Pet.Age as the key.
                // Use Pet.Name as the value for each entry.
                var query = pets.AsQueryable().GroupBy(pet => pet.Age);

                // Iterate over each IGrouping in the collection.
                foreach (var ageGroup in query)
                {
                    Console.WriteLine("Age group: {0}  Number of pets: {1}", ageGroup.Key, ageGroup.Count());
                }
            }

            /*
                This code produces the following output:

                Age group: 8  Number of pets: 1
                Age group: 4  Number of pets: 2
                Age group: 1  Number of pets: 1

            */



.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:
© 2014 Microsoft