Raggruppamento dei dati
Il raggruppamento si riferisce all'operazione di inserimento dei dati in gruppi in modo che gli elementi all'interno di ciascun gruppo condividano un attributo comune.
Nella figura seguente vengono illustrati i risultati del raggruppamento di una sequenza di caratteri.La chiave per ogni gruppo è il carattere.
I metodi degli operatori di query standard che raggruppano gli elementi di dati sono riportati nella sezione seguente.
Metodi
Nome metodo |
Descrizione |
Sintassi dell'espressione di query in C# |
Sintassi dell'espressione di query in Visual Basic |
Ulteriori informazioni |
---|---|---|---|---|
GroupBy |
Raggruppa gli elementi che condividono un attributo comune.Ogni gruppo è rappresentato da un oggetto IGrouping<TKey, TElement>. |
group … by In alternativa group … by … into … |
Group … By … Into … |
|
ToLookup |
Inserisce gli elementi in un oggetto Lookup<TKey, TElement> (un dizionario uno a molti) in base a una funzione del selettore principale. |
Non applicabile. |
Non applicabile. |
Esempio di sintassi dell'espressione di query
Nell'esempio di codice seguente viene utilizzata la clausola group by in C# o la clausola Group By in Visual Basic per raggruppare i numeri interi in un elenco a seconda che siano pari o dispari.
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
*/
Vedere anche
Attività
Procedura: creare un gruppo annidato (Guida per programmatori C#)
Procedura: raggruppare i file per estensione (LINQ)
Procedura: raggruppare i risultati di una query (Guida per programmatori C#)
Procedura: eseguire una sottoquery su un'operazione di raggruppamento (Guida per programmatori C#)
Procedura: suddividere un file in molti file utilizzando i gruppi (LINQ)
Riferimenti
Clausola group (Riferimento C#)
Clausola Group By (Visual Basic)