Udostępnij za pośrednictwem


Grupowanie danych

Grupowanie odnosi się do operacji umieszczania danych w grupach, tak, aby elementy w każdej grupie udostępniać wspólne atrybutu.

Poniższa ilustracja pokazuje wyników grupowania sekwencję znaków.Klucz dla każdej grupy jest znakiem.

Operacje grupowania programu LINQ

Metody operator standardowej kwerendy, które grupować elementy danych są wymienione w poniższej sekcji.

Metody

Nazwa metody

Opis

Kwerendy języka C# składni wyrażenia

Visual BasicSkładni wyrażenia kwerendy

Więcej informacji

GroupBy

Elementy grup, które współużytkują typowe atrybutu.Każda grupa jest reprezentowana przez IGrouping obiektu.

group … by

- lub -

group … by … into …

Group … By … Into …

Enumerable.GroupBy``2

Queryable.GroupBy``2

ToLookup

Wstawia elementy do Lookup (słownika jeden do wielu) na podstawie funkcji selektor klucza.

Nie dotyczy.

Nie dotyczy.

Enumerable.ToLookup``2

Przykład składni wyrażenia kwerendy

Następujący kod w przykładzie wykorzystano group by klauzuli w C# lub Group By w klauzuli Visual Basic do liczb całkowitych grupy na liście zgodnie z tego, czy są one parzysta lub nieparzysta.

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

Zobacz też

Zadania

Porady: tworzenie grup zagnieżdżonych (Przewodnik programowania w języku C#)

Porady: grupowanie plików według rozszerzenia (LINQ)

Porady: grupowanie wyników kwerendy (Przewodnik programowania w języku C#)

Porady: wykonanie podzapytania w operacji grupowania (Przewodnik programowania w języku C#)

Porady: dzielenie pliku na kilka plików za pomocą grup (LINQ)

Informacje

group — Klauzula (odwołanie w C#)

Group By — Klauzula (Visual Basic)

System.Linq

Koncepcje

Standardowe operatory zapytań — Omówienie