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, TResult>-Methode: (IEnumerable<TSource>, Func<TSource, TKey>, Func<TKey, IEnumerable<TSource>, TResult>)

 

Veröffentlicht: Oktober 2016

Gruppiert die Elemente einer Sequenz entsprechend einer angegebenen Schlüsselauswahlfunktion und erstellt aus jeder Gruppe und ihrem Schlüssel einen Ergebniswert.

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

public static IEnumerable<TResult> GroupBy<TSource, TKey, TResult>(
	this IEnumerable<TSource> source,
	Func<TSource, TKey> keySelector,
	Func<TKey, IEnumerable<TSource>, TResult> resultSelector
)

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.

resultSelector
Type: System.Func<TKey, IEnumerable<TSource>, TResult>

Eine Funktion, mit der aus jeder Gruppe ein Ergebniswert erstellt wird.

Rückgabewert

Type: System.Collections.Generic.IEnumerable<TResult>

Eine Auflistung von Elementen vom Typ TResult wobei jedes Element eine Projektion über eine Gruppe und ihrem Schlüssel darstellt.

Typparameter

TSource

Der Typ der Elemente von source.

TKey

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

TResult

Der Typ des von resultSelector zurückgegebenen Ergebniswerts.

In der Abfrageausdruckssyntax ein group by (Visual C#) oder Group By Into (Visual Basic)-Klausel übersetzt in einen Aufruf von GroupBy.

Im folgenden Codebeispiel wird veranschaulicht, wie Sie GroupBy<TSource, TKey, TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TKey, IEnumerable<TSource>, TResult>) auf die Elemente einer Sequenz gruppieren und eine Sequenz von Ergebnissen vom Typ projizieren TResult.

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

public static void GroupByEx3()
{
    // Create a list of pets.
    List<Pet> petsList =
        new List<Pet>{ new Pet { Name="Barley", Age=8.3 },
                       new Pet { Name="Boots", Age=4.9 },
                       new Pet { Name="Whiskers", Age=1.5 },
                       new Pet { Name="Daisy", Age=4.3 } };

    // Group Pet objects by the Math.Floor of their age.
    // Then project an anonymous type from each group
    // that consists of the key, the count of the group's
    // elements, and the minimum and maximum age in the group.
    var query = petsList.GroupBy(
        pet => Math.Floor(pet.Age),
        (age, pets) => new
        {
            Key = age,
            Count = pets.Count(),
            Min = pets.Min(pet => pet.Age),
            Max = pets.Max(pet => pet.Age)
        });

    // Iterate over each anonymous type.
    foreach (var result in query)
    {
        Console.WriteLine("\nAge group: " + result.Key);
        Console.WriteLine("Number of pets in this age group: " + result.Count);
        Console.WriteLine("Minimum age: " + result.Min);
        Console.WriteLine("Maximum age: " + result.Max);
    }

    /*  This code produces the following output:

        Age group: 8
        Number of pets in this age group: 1
        Minimum age: 8.3
        Maximum age: 8.3

        Age group: 4
        Number of pets in this age group: 2
        Minimum age: 4.3
        Maximum age: 4.9

        Age group: 1
        Number of pets in this age group: 1
        Minimum age: 1.5
        Maximum age: 1.5
    */
}

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.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: