GroupBy(TSource, TKey, TElement) Methode (IEnumerable(TSource), Func(TSource, TKey), Func(TSource, TElement))
Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

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
Type: System.Collections.Generic.IEnumerable<TSource>

Ein IEnumerable<T> deren Elemente gruppiert.

keySelector
Type: System.Func<TSource, TKey>

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

elementSelector
Type: System.Func<TSource, TElement>

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

Rückgabewert

Type: System.Collections.Generic.IEnumerable<IGrouping<TKey, TElement>>

Ein IEnumerable<IGrouping<TKey, TElement>> in c# oder IEnumerable(Of IGrouping(Of TKey, TElement)) in Visual Basic in dem jedes IGrouping<TKey, TElement> Objekt enthält eine Auflistung von Objekten des Typs TElement und einen Schlüssel.

Typparameter

TSource

Der Typ der Elemente von source.

TKey

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

TElement

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

Exception Condition
ArgumentNullException

source oder keySelector oder elementSelector ist null.

Diese Methode wird mit verzögerter Ausführung implementiert. Der sofortige Rückgabewert ist ein Objekt, das alle Informationen gespeichert hat, die zum Ausführen der Aktion erforderlich sind. Die von dieser Methode dargestellte Abfrage wird nicht ausgeführt, bis das Objekt aufgelistet wird, entweder durch Aufrufen der GetEnumerator -Methode direkt oder mithilfe von foreach in Visual C# oder For Each in Visual Basic.

Die GroupBy<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>) -Methode gibt eine Auflistung von IGrouping<TKey, TElement> Objekten, eines für jedes distinct-Schlüssel, der aufgetreten ist. Ein IGrouping<TKey, TElement> ist eine IEnumerable<T> die auch einen Schlüssel, dessen Elemente zugeordnet ist.

Die IGrouping<TKey, TElement> Objekte werden zurückgegeben, die in einer Reihenfolge basierend auf der Reihenfolge der Elemente im source erzeugt den ersten Schlüssel der einzelnen IGrouping<TKey, TElement>. Elemente in einer Gruppierung werden in der angegebenen Reihenfolge an, die Elemente, die sie erzeugt zurückgegeben source.

Der Standardgleichheitsvergleich Default zum Vergleichen von Schlüsseln verwendet wird.

Im folgenden Codebeispiel wird veranschaulicht, wie Sie 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 ein group by (Visual C#) oder Group By Into (Visual Basic)-Klausel übersetzt in einen Aufruf von GroupBy. 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 Visual C# oder Visual Basic Abfrageausdruck, der Element- und Auswahl von Ausdrücken in umgekehrter Reihenfolge auftreten, Positionen ihrer Argumente in einem Aufruf an die GroupBy<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>) Methode.

Universal Windows Platform
Verfügbar seit 8
.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