Sdílet prostřednictvím


Gruppieren von Daten

Aktualisiert: November 2007

Beim Gruppieren handelt es sich um einen Vorgang, bei dem Daten in Gruppen angeordnet werden, sodass die Elemente in jeder Gruppe ein gemeinsames Attribut teilen.

Die folgende Abbildung zeigt die Gruppierungsergebnisse einer Sequenz von Zeichen. Der Schlüssel für jede Gruppe ist das Zeichen.

LINQ-Gruppierungsvorgänge

Die Standardabfrageoperator-Methoden, die Datenelemente gruppieren, werden im folgenden Abschnitt aufgelistet.

Methoden

Methodenname

Beschreibung

C#-Abfrageausdruckssyntax

Visual Basic-Abfrageausdruckssyntax

Weitere Informationen

GroupBy

Gruppiert Elemente, die ein gemeinsames Attribut besitzen. Jede Gruppe wird durch ein IGrouping<TKey, TElement>-Objekt dargestellt.

group … by

– oder –

group … by … into …

Group … By … Into …

Enumerable.GroupBy

Queryable.GroupBy

ToLookup

Fügt Elemente auf Grundlage einer Schlüsselauswahlfunktion in ein Lookup<TKey, TElement> (ein 1:n-Wörterbuch) ein.

Nicht zutreffend.

Nicht zutreffend.

Enumerable.ToLookup

Beispiel von Abfrageausdruckssyntax

Im folgenden Codebeispiel wird die group by-Klausel in C# oder die Group By-Klausel in Visual Basic verwendet, um ganze Zahlen in einer Liste nach geraden und ungeraden Zahlen zu gruppieren.

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

Weitere Informationen zum Gruppieren von Daten

Topic Location
Gewusst wie: Ausführen einer Unterabfrage für eine Gruppierungsoperation (C#-Programmierhandbuch) C#-Programmierreferenz
group-Klausel (C#-Referenz) C#-Programmierreferenz
Gewusst wie: Gruppieren von Ergebnissen auf verschiedene Weisen (C#-Programmierhandbuch) C#-Programmierreferenz
Gewusst wie: Gruppieren einer Gruppe (C#-Programmierhandbuch) C#-Programmierreferenz
Gewusst wie: Gruppieren von Dateien nach Erweiterung (LINQ) Sprachintegrierte Abfrage (Language-Integrated Query, LINQ)
Gewusst wie: Teilen einer Datei in mehrere Dateien durch das Verwenden von Gruppen (LINQ) Sprachintegrierte Abfrage (Language-Integrated Query, LINQ)
Gewusst wie: Ausführen einer Unterabfrage für eine Gruppierungsoperation (C#-Programmierhandbuch) dv_csref
group-Klausel (C#-Referenz) dv_csref
Gewusst wie: Gruppieren von Abfrageergebnissen (C#-Programmierhandbuch) dv_csref
Gewusst wie: Erstellen einer geschachtelten Gruppe (C#-Programmierhandbuch) dv_csref
Gewusst wie: Gruppieren von Dateien nach Erweiterung (LINQ) dv_Linq
Gewusst wie: Teilen einer Datei in mehrere Dateien durch das Verwenden von Gruppen (LINQ) dv_Linq
Gewusst wie: Ausführen einer Unterabfrage für eine Gruppierungsoperation (C#-Programmierhandbuch) dv_csref
group-Klausel (C#-Referenz) dv_csref
Gewusst wie: Gruppieren von Abfrageergebnissen (C#-Programmierhandbuch) dv_csref
Gewusst wie: Erstellen einer geschachtelten Gruppe (C#-Programmierhandbuch) dv_csref
Gewusst wie: Gruppieren von Dateien nach Erweiterung (LINQ) dv_Linq
Gewusst wie: Teilen einer Datei in mehrere Dateien durch das Verwenden von Gruppen (LINQ) dv_Linq

Siehe auch

Konzepte

Übersicht über Standardabfrageoperatoren

Referenz

group-Klausel (C#-Referenz)

GROUP BY-Klausel (Visual Basic)

System.Linq