GroupBy(TSource, TKey, TElement) Methode (IEnumerable(TSource), Func(TSource, TKey), Func(TSource, TElement))
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Enumerable.GroupBy<TSource, TKey, TElement>-Methode (IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>)

.NET Framework (current version)
 

Gruppiert die Elemente einer Sequenz entsprechend einer angegebenen Schlüsselauswahlfunktion und projiziert die Elemente für jede Gruppe mithilfe einer angegebenen Funktion.

Namespace:   System.Linq
Assembly:  System.Core (in System.Core.dll)

public static IEnumerable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(
	this IEnumerable<TSource> source,
	Func<TSource, TKey> keySelector,
	Func<TSource, TElement> elementSelector
)

Parameter

source

Ein IEnumerable<T>, dessen Elemente gruppiert werden sollen.

keySelector

Eine Funktion zum Extrahieren des Schlüssels für jedes Element.

elementSelector

Eine Funktion, mit der jedes Quellelement einem Element in dem IGrouping<TKey, TElement> zugeordnet wird.

Rückgabewert

Type: System.Collections.Generic.IEnumerable<IGrouping<TKeyTElement>>

Ein IEnumerable<IGrouping<TKey, TElement>> in C# oder ein IEnumerable(Of IGrouping(Of TKey, TElement)) in Visual Basic, wobei jedes IGrouping<TKey, TElement>-Objekt eine Auflistung von Objekten vom Typ TElement und einen Schlüssel enthält.

Typparameter

TSource

Der Typ der Elemente von source.

TKey

Der Typ des von keySelector zurückgegebenen Schlüssels.

TElement

Der Typ der Elemente in der IGrouping<TKey, TElement>.

Exception Condition
ArgumentNullException

source, keySelector oder elementSelector ist null.

Diese Methode wird mit verzögerter Ausführung implementiert.Der Wert der sofortigen Rückgabe ist ein Objekt, in dem alle zum Ausführen der Aktion erforderlichen Informationen gespeichert werden.Die von dieser Methode dargestellte Abfrage wird erst ausgeführt, wenn das Objekt entweder durch den direkten Aufruf der zugehörigen GetEnumerator-Methode oder mithilfe von foreach in Visual C# oder For Each in Visual Basic aufgelistet wird.

Die GroupBy<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>)-Methode gibt eine Auflistung von IGrouping<TKey, TElement>-Objekten zurück, die für jeden ermittelten eindeutigen Schlüssel ein Objekt enthält.Ein IGrouping<TKey, TElement> ist ein IEnumerable<T>, dessen Elementen auch ein Schlüssel zugeordnet ist.

Die IGrouping<TKey, TElement>-Objekte werden in einer Reihenfolge zurückgegeben, die auf der Reihenfolge der Elemente in der source beruht, die den ersten Schlüssel für jedes IGrouping<TKey, TElement> erzeugt hat.Elemente in einer Gruppierung werden in der Reihenfolge zurückgegeben, in der die Elemente, die sie erzeugt haben, in source angeordnet sind.

Schlüssel werden mithilfe des Standardgleichheitsvergleichs Default verglichen.

Im folgenden Codebeispiel wird veranschaulicht, wie Sie mit GroupBy<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>) die Elemente einer Sequenz gruppieren.

class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}

// Uses method-based query syntax.
public static void GroupByEx1()
{
    // Create a list of pets.
    List<Pet> pets =
        new List<Pet>{ new Pet { Name="Barley", Age=8 },
                       new Pet { Name="Boots", Age=4 },
                       new Pet { Name="Whiskers", Age=1 },
                       new Pet { Name="Daisy", Age=4 } };

    // Group the pets using Age as the key value 
    // and selecting only the pet's Name for each value.
    IEnumerable<IGrouping<int, string>> query =
        pets.GroupBy(pet => pet.Age, pet => pet.Name);

    // Iterate over each IGrouping in the collection.
    foreach (IGrouping<int, string> petGroup in query)
    {
        // Print the key value of the IGrouping.
        Console.WriteLine(petGroup.Key);
        // Iterate over each value in the 
        // IGrouping and print the value.
        foreach (string name in petGroup)
            Console.WriteLine("  {0}", name);
    }
}

/*
 This code produces the following output:

 8
   Barley
 4
   Boots
   Daisy
 1
   Whiskers
*/

In der Abfrageausdruckssyntax wird eine group by-Klausel (Visual C#) oder Group By Into-Klausel (Visual Basic) in einen Aufruf von GroupBy übersetzt.Die Übersetzung des Abfrageausdrucks im folgenden Beispiel entspricht der Abfrage im obigen Beispiel.

IEnumerable<IGrouping<int, string>> query =
    from pet in pets
    group pet.Name by pet.Age;
System_CAPS_noteHinweis

In einem Abfrageausdruck in Visual C# oder Visual Basic sind die Ausdrücke für Element- und Schlüsselauswahl in der umgekehrten Reihenfolge der Positionen ihrer Argumente in einem Aufruf der GroupBy<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>)-Methode angeordnet.

Universal Windows Platform
Verfügbar seit 4.5
.NET Framework
Verfügbar seit 3.5
Portable Class Library
Unterstützt in: portable .NET platforms
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen:
© 2016 Microsoft