Sdílet prostřednictvím


Seskupování dat

Seskupování odkazuje na operaci ukládání dat do skupin tak, aby prvky každé skupiny sdílejí společné atribut.

Následující obrázek znázorňuje posloupnost znaků seskupování výsledků.Klíč pro každou skupinu je znak.

LINQ – operace seskupení

V následující části jsou uvedeny metody operátor standardního dotazu, které skupiny datových prvků.

Metody

Název metody

Description

Syntaxi výrazu dotazu C#

Visual BasicSyntaxe dotazu výraz

Další informace

GroupBy

Skupiny prvků, které sdílejí společné atribut.Každá skupina je reprezentována IGrouping objektu.

group … by

-nebo-

group … by … into …

Group … By … Into …

Enumerable.GroupBy``2

Queryable.GroupBy``2

ToLookup

Vloží do prvky Lookup (slovník n) založené na volič klíčové funkce.

Nelze použít

Nelze použít

Enumerable.ToLookup``2

Příklad syntaxe výraz dotazu

Následující kód například používá group by klauzule v C# nebo Group By v klauzuli Visual Basic na celá čísla skupiny v seznamu podle toho, zda jsou sudé nebo liché.

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

Viz také

Úkoly

Postupy: Vytvoření vnořené skupiny (Průvodce programováním v C#)

Postupy: Seskupování souborů podle přípony (LINQ)

Postupy: Seskupení výsledků dotazu (Průvodce programováním v C#)

Postupy: Provádění poddotazů na skupinách (Průvodce programováním v C#)

Postupy: Rozdělení souboru na více souborů pomocí skupin (LINQ)

Referenční dokumentace

group – klauzule (Referenční dokumentace jazyka C#)

Group By – klauzule (Visual Basic)

System.Linq

Koncepty

Přehled standardních operátorů dotazu