Gruppieren von Daten (C#)Grouping Data (C#)

Als „Gruppieren“ wird das Anordnen von Daten in Gruppen bezeichnet, sodass die Elemente in jeder Gruppe über ein gemeinsames Attribut verfügen.Grouping refers to the operation of putting data into groups so that the elements in each group share a common attribute.

Die folgende Abbildung zeigt die Ergebnisse der Gruppierung einer Zeichenfolge.The following illustration shows the results of grouping a sequence of characters. Der Schlüssel für jede Gruppe ist das Zeichen.The key for each group is the character.

LINQ-GruppierungsvorgängeLINQ Grouping Operations

Die Methoden des Standardabfrageoperators, die Datenelemente gruppieren, sind im folgenden Abschnitt aufgeführt.The standard query operator methods that group data elements are listed in the following section.

MethodenMethods

MethodennameMethod Name BeschreibungDescription C#-AbfrageausdruckssyntaxC# Query Expression Syntax Weitere InformationenMore Information
GroupByGroupBy Gruppenelemente, die über ein gemeinsames Attribut verfügen.Groups elements that share a common attribute. Jede Gruppe wird durch ein IGrouping<TKey,TElement>-Objekt dargestellt.Each group is represented by an IGrouping<TKey,TElement> object. group … by

- oder - -or-

group … by … into …
Enumerable.GroupBy

Queryable.GroupBy
ToLookupToLookup Fügt Elemente basierend auf einer Schlüsselauswahlfunktion in eine Lookup<TKey,TElement>-Klasse (one-to-many-Wörterbuch) ein.Inserts elements into a Lookup<TKey,TElement> (a one-to-many dictionary) based on a key selector function. Nicht zutreffend.Not applicable. Enumerable.ToLookup

Beispiel für die AbfrageausdruckssyntaxQuery Expression Syntax Example

Im folgenden Codebeispiel wird die group by-Klausel angewandt, um die Gruppe ganzer Zahlen in Listen mit geraden und ungeraden Zahlen zu aufzuteilen.The following code example uses the group by clause to group integers in a list according to whether they are even or odd.

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 auchSee Also

System.Linq
Standard Query Operators Overview (C#) (Übersicht der Standardabfrageoperatoren (C#))Standard Query Operators Overview (C#)
group-Klauselgroup clause
Gewusst wie: Erstellen einer geschachtelten GruppeHow to: Create a Nested Group
Vorgehensweise: Gruppieren von Dateien nach Erweiterung (LINQ) (C#)How to: Group Files by Extension (LINQ) (C#)
Gewusst wie: Gruppieren von AbfrageergebnissenHow to: Group Query Results
Gewusst wie: Ausführen einer Unterabfrage für eine GruppierungsoperationHow to: Perform a Subquery on a Grouping Operation
Vorgehensweise: Teilen einer Datei in mehrere Dateien durch das Verwenden von Gruppen (LINQ) (C#)How to: Split a File Into Many Files by Using Groups (LINQ) (C#)