Gruppieren von Daten
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.
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 … |
|
ToLookup |
Fügt Elemente auf Grundlage einer Schlüsselauswahlfunktion in ein Lookup<TKey, TElement> (ein 1:n-Wörterbuch) ein. |
Nicht zutreffend. |
Nicht zutreffend. |
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
*/
Siehe auch
Aufgaben
Gewusst wie: Erstellen einer geschachtelten Gruppe (C#-Programmierhandbuch)
Gewusst wie: Gruppieren von Dateien nach Erweiterung (LINQ)
Gewusst wie: Gruppieren von Abfrageergebnissen (C#-Programmierhandbuch)
Gewusst wie: Ausführen einer Unterabfrage für eine Gruppierungsoperation (C#-Programmierhandbuch)
Gewusst wie: Teilen einer Datei in mehrere Dateien durch das Verwenden von Gruppen (LINQ)
Referenz
GROUP BY-Klausel (Visual Basic)