Compartilhar via


Agrupando dados

Agrupamento refere-se a operação de colocação de dados em grupos para que um atributo comum de compartilhar os elementos em cada grupo.

A ilustração a seguir mostra os resultados de uma seqüência de caracteres de agrupamento.A chave para cada grupo é o caractere.

Operações de agrupamento LINQ

Os métodos de operador de consulta padrão que agrupam os elementos de dados estão listados na seção a seguir.

Métodos

Nome do método

Descrição

C# Expressão de consulta sintaxe

Visual BasicSintaxe de expressões de consulta

Mais informações

GroupBy

Elementos de grupos que compartilham um atributo comum.Cada grupo é representado por um IGrouping<TKey, TElement> objeto.

group … by

- ou -

group … by … into …

Group … By … Into …

Enumerable.GroupBy

Queryable.GroupBy

ToLookup

Insere elementos em um Lookup<TKey, TElement> (um dicionário de um-para-muitos) com base em uma função de seletor de chave.

Não aplicável.

Não aplicável.

Enumerable.ToLookup

Exemplo de sintaxe de expressão de consulta

O seguinte exemplo de código usa a group by cláusula em C# ou o Group By cláusula Visual Basic para números inteiros de grupo em uma lista de acordo com se eles são pares ou ímpares.


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

Consulte também

Tarefas

Como: criar um grupo aninhado (guia de programação do C#)

Como: agrupar arquivos por extensão (LINQ)

Como: resultados de consulta de grupo (guia de programação do C#)

Como: executar uma subconsulta em uma operação de agrupamento (guia de programação do C#)

Como: dividir um arquivo em vários arquivos usando grupos (LINQ)

Referência

cláusula Group (referência de C#)

Agrupar por cláusula (Visual Basic)

System.Linq

Conceitos

Visão geral operadores de consulta padrão