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 a elementos de dados de grupo 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ão de consulta

Mais informações

GroupBy

Agrupa elementos 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 C# ou Group By cláusula Visual Basic para números inteiros de grupo em uma lista de acordo com a se elas ainda são ou ímpar.


        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 TRANSLATION FROM VPE FOR CSHARP)

Como: Agrupar arquivos por extensão (LINQ)

Como: grupo consulta Resultados (guia de programação TRANSLATION FROM VPE FOR CSHARP)

Como: executar uma subconsulta em uma operação de agrupamento (guia de programação TRANSLATION FROM VPE FOR CSHARP)

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

Referência

cláusula Group (referência de TRANSLATION FROM VPE FOR CSHARP)

Cláusula Group By (Visual Basic)

System.Linq

Conceitos

Visão geral operadores de consulta padrão