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

Queryable.GroupBy<TSource, TKey, TElement>-Methode: (IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource, TElement>>)

 

Veröffentlicht: Oktober 2016

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 IQueryable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(
	this IQueryable<TSource> source,
	Expression<Func<TSource, TKey>> keySelector,
	Expression<Func<TSource, TElement>> elementSelector
)

Parameter

source
Type: System.Linq.IQueryable<TSource>

Ein IQueryable<T> deren Elemente gruppiert.

keySelector
Type: System.Linq.Expressions.Expression<Func<TSource, TKey>>

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

elementSelector
Type: System.Linq.Expressions.Expression<Func<TSource, TElement>>

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

Rückgabewert

Type: System.Linq.IQueryable<IGrouping<TKey, TElement>>

Ein IQueryable<IGrouping<TKey, TElement>> in c# oder IQueryable(Of IGrouping(Of TKey, TElement)) in Visual Basic in dem jede IGrouping<TKey, TElement> enthält eine Sequenz von Objekten vom Typ TElement und einen Schlüssel.

Typparameter

TSource

Der Typ der Elemente von source.

TKey

Der Typ des Schlüssels, der von der Funktion dargestellt zurückgegeben keySelector.

TElement

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

Exception Condition
ArgumentNullException

source oder keySelector oder elementSelector ist null.

Diese Methode verfügt über mindestens einen Parameter vom Typ Expression<TDelegate> deren Typargument ist eines der Func<T, TResult> Typen. Für diese Parameter können Sie einen Lambda-Ausdruck übergeben, und es werden kompiliert, um eine Expression<TDelegate>.

Die GroupBy<TSource, TKey, TElement>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource, TElement>>) -Methode generiert eine MethodCallExpression Aufruf darstellt GroupBy<TSource, TKey, TElement>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource, TElement>>) sich selbst als konstruierte generische Methode. Anschließend übergibt der MethodCallExpression zu der CreateQuery<TElement>(Expression) Methode der IQueryProvider durch dargestellt die Provider Eigenschaft der source Parameter.

Das Abfrageverhalten durch das Ausführen einer Ausdrucksbaumstruktur, die aufrufende darstellt, GroupBy<TSource, TKey, TElement>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource, TElement>>) hängt von der Implementierung des Typs der source Parameter. Das erwartete Verhalten ist, dass die Elemente gruppiert source durch einen Wert, der durch den Aufruf abgerufen wird keySelector für jedes Element. Es ruft elementSelector für jedes Element auf ein Ergebniselement zu erhalten.

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

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

public static void GroupByEx2()
{
    // Create a list of Pet objects.
    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 Pet.Age as the key.
    // Use Pet.Name as the value for each entry.
    IEnumerable<IGrouping<int, string>> query =
        pets.AsQueryable().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
*/

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 3.5
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.1
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: