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.

Operazioni di raggruppamento LINQ

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

-oppure-

group … by … into …

Group … By … Into …

Enumerable.GroupBy

Queryable.GroupBy

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.

Enumerable.ToLookup

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à

How to: Group a Group (C# Programming Guide)

Procedura: raggruppare i file per estensione (LINQ)

How to: Group Results in Various Ways (C# Programming Guide)

How to: Perform a Subquery on a Grouping Operation (C# Programming Guide)

Procedura: suddividere un file in molti file utilizzando i gruppi (LINQ)

Riferimenti

Clausola group (Riferimento C#)

Clausola Group By (Visual Basic)

System.Linq

Concetti

Cenni preliminari sugli operatori di query standard