Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês

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

 

Agrupa os elementos de uma seqüência de acordo com uma função de seleção de chave especificada e cria um valor de resultado de cada grupo e sua chave.

Namespace:   System.Linq
Assembly:  System.Core (em System.Core.dll)

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

Parâmetros

source
Type: System.Collections.Generic.IEnumerable<TSource>

Um IEnumerable<T> cujos elementos serão agrupados.

keySelector
Type: System.Func<TSource, TKey>

Uma função para extrair a chave de cada elemento.

resultSelector
Type: System.Func<TKey, IEnumerable<TSource>, TResult>

Uma função para criar um valor de resultado de cada grupo.

Valor Retornado

Type: System.Collections.Generic.IEnumerable<TResult>

Uma coleção de elementos do tipo TResult, em que cada elemento representa uma projeção em um grupo e sua chave.

Parâmetros de Tipo

TSource

O tipo dos elementos de source.

TKey

O tipo da chave retornada por keySelector.

TResult

O tipo do valor de resultado retornado por resultSelector.

In query expression syntax, a group by (csprcs) or Group By Into (vbprvb) clause translates to an invocation of Overload:System.Linq.Enumerable.GroupBy.

The following code example demonstrates how to use M:System.Linq.Enumerable.GroupBy``3(System.Collections.Generic.IEnumerable{``0},System.Func{``0,``1},System.Func{``1,System.Collections.Generic.IEnumerable{``0},``2}) to group the elements of a sequence and project a sequence of results of type TResult.

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

public static void GroupByEx3()
{
    // 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 objects by the Math.Floor of their 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),
        (age, pets) => new
        {
            Key = age,
            Count = pets.Count(),
            Min = pets.Min(pet => pet.Age),
            Max = pets.Max(pet => pet.Age)
        });

    // 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
    */
}

Plataforma Universal do Windows
Disponível desde 8
.NET Framework
Disponível desde 3.5
Biblioteca de Classes Portátil
Com suporte no: plataformas portáteis do .NET
Silverlight
Disponível desde 2.0
Windows Phone Silverlight
Disponível desde 7.0
Windows Phone
Disponível desde 8.1
Retornar ao início
Mostrar: