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.
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 … |
|
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. |
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: 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)