Queryable.GroupBy Metoda

Definice

Seskupí prvky sekvence.Groups the elements of a sequence.

Přetížení

GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>)

Seskupí prvky sekvence podle zadané funkce selektoru klíče a vytvoří výslednou hodnotu z každé skupiny a jejího klíče.Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key. Klíče jsou porovnány pomocí zadané porovnávací metody a prvky každé skupiny jsou probíhají pomocí zadané funkce.Keys are compared by using a specified comparer and the elements of each group are projected by using a specified function.

GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>)

Seskupí prvky sekvence podle zadané funkce selektoru klíče a vytvoří výslednou hodnotu z každé skupiny a jejího klíče.Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key. Prvky každé skupiny jsou probíhají pomocí zadané funkce.The elements of each group are projected by using a specified function.

GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>)

Seskupí prvky sekvence podle zadané funkce selektoru klíče a projekty prvků pro každou skupinu pomocí zadané funkce.Groups the elements of a sequence according to a specified key selector function and projects the elements for each group by using a specified function.

GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>)

Seskupí prvky sekvence a rozprojektech prvky pro každou skupinu pomocí zadané funkce.Groups the elements of a sequence and projects the elements for each group by using a specified function. Hodnoty klíčů jsou porovnány pomocí zadané porovnávací metody.Key values are compared by using a specified comparer.

GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>)

Seskupí prvky sekvence podle zadané funkce selektoru klíče a vytvoří výslednou hodnotu z každé skupiny a jejího klíče.Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key.

GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>)

Seskupí prvky sekvence podle zadané funkce selektoru klíče a vytvoří výslednou hodnotu z každé skupiny a jejího klíče.Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key. Klíče se porovnávají pomocí zadané porovnávací metody.Keys are compared by using a specified comparer.

GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>)

Seskupí prvky sekvence podle zadané funkce selektoru klíče a porovná klíče s použitím zadané porovnávací metody.Groups the elements of a sequence according to a specified key selector function and compares the keys by using a specified comparer.

GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>)

Seskupí prvky sekvence podle zadané funkce selektoru klíče.Groups the elements of a sequence according to a specified key selector function.

GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>)

Seskupí prvky sekvence podle zadané funkce selektoru klíče a vytvoří výslednou hodnotu z každé skupiny a jejího klíče.Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key. Klíče jsou porovnány pomocí zadané porovnávací metody a prvky každé skupiny jsou probíhají pomocí zadané funkce.Keys are compared by using a specified comparer and the elements of each group are projected by using a specified function.

public:
generic <typename TSource, typename TKey, typename TElement, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<TResult> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Linq::Expressions::Expression<Func<TSource, TElement> ^> ^ elementSelector, System::Linq::Expressions::Expression<Func<TKey, System::Collections::Generic::IEnumerable<TElement> ^, TResult> ^> ^ resultSelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TElement,TResult> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>> resultSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TElement,TResult> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>> resultSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Source, 'Element>> * System.Linq.Expressions.Expression<Func<'Key, seq<'Element>, 'Result>> * System.Collections.Generic.IEqualityComparer<'Key> -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement, TResult) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), elementSelector As Expression(Of Func(Of TSource, TElement)), resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TElement), TResult)), comparer As IEqualityComparer(Of TKey)) As IQueryable(Of TResult)

Parametry typu

TSource

Typ prvků source .The type of the elements of source.

TKey

Typ klíče vrácený funkcí reprezentovanou v keySelector .The type of the key returned by the function represented in keySelector.

TElement

Typ prvků v každé z nich IGrouping<TKey,TElement> .The type of the elements in each IGrouping<TKey,TElement>.

TResult

Typ výsledné hodnoty, kterou vrátí resultSelector .The type of the result value returned by resultSelector.

Parametry

source
IQueryable<TSource>

IQueryable<T>Jejichž prvky mají být seskupeny.An IQueryable<T> whose elements to group.

keySelector
Expression<Func<TSource,TKey>>

Funkce pro extrakci klíče pro každý prvek.A function to extract the key for each element.

elementSelector
Expression<Func<TSource,TElement>>

Funkce pro namapování jednotlivých zdrojových elementů na prvek v IGrouping<TKey,TElement> .A function to map each source element to an element in an IGrouping<TKey,TElement>.

resultSelector
Expression<Func<TKey,IEnumerable<TElement>,TResult>>

Funkce pro vytvoření hodnoty výsledku z každé skupiny.A function to create a result value from each group.

comparer
IEqualityComparer<TKey>

IEqualityComparer<T>K porovnání klíčů.An IEqualityComparer<T> to compare keys.

Návraty

IQueryable<TResult>

T:System.Linq.IQueryable ' 1 , který má argument typu TResult a kde každý prvek představuje projekci přes skupinu a její klíč.An T:System.Linq.IQueryable`1 that has a type argument of TResult and where each element represents a projection over a group and its key.

Výjimky

source nebo keySelector nebo elementSelector resultSelector comparer null .source or keySelector or elementSelector or resultSelector or comparer is null.

Poznámky

Tato metoda má alespoň jeden parametr typu, Expression<TDelegate> jehož argumentem typu je jeden z Func<T,TResult> typů.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Pro tyto parametry můžete předat výraz lambda a bude zkompilován do Expression<TDelegate> .For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>)Metoda generuje MethodCallExpression , který reprezentuje volání GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>) sebe sama jako vytvořenou obecnou metodu.The GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>) method generates a MethodCallExpression that represents calling GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>) itself as a constructed generic method. Poté předá MethodCallExpression CreateQuery<TElement>(Expression) metodě IQueryProvider reprezentované Provider vlastností source parametru.It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Chování dotazu, k němuž dojde v důsledku provádění stromu výrazu, který představuje volání, GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>) závisí na implementaci typu source parametru.The query behavior that occurs as a result of executing an expression tree that represents calling GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>) depends on the implementation of the type of the source parameter. Očekávané chování je, že seskupí prvky source podle hodnot klíče, které jsou získány vyvoláním keySelector pro každý prvek.The expected behavior is that it groups the elements of source by key values that are obtained by invoking keySelector on each element. comparerParametr se používá k porovnání hodnot klíčů.The comparer parameter is used to compare key values. elementSelectorParametr se používá k projekci prvků každé skupiny a resultSelector parametr se používá k získání hodnoty výsledku z každé skupiny a jejího klíče.The elementSelector parameter is used to project the elements of each group, and the resultSelector parameter is used to obtain a result value from each group and its key.

Platí pro

GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>)

Seskupí prvky sekvence podle zadané funkce selektoru klíče a vytvoří výslednou hodnotu z každé skupiny a jejího klíče.Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key. Prvky každé skupiny jsou probíhají pomocí zadané funkce.The elements of each group are projected by using a specified function.

public:
generic <typename TSource, typename TKey, typename TElement, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<TResult> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Linq::Expressions::Expression<Func<TSource, TElement> ^> ^ elementSelector, System::Linq::Expressions::Expression<Func<TKey, System::Collections::Generic::IEnumerable<TElement> ^, TResult> ^> ^ resultSelector);
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TElement,TResult> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>> resultSelector);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Source, 'Element>> * System.Linq.Expressions.Expression<Func<'Key, seq<'Element>, 'Result>> -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement, TResult) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), elementSelector As Expression(Of Func(Of TSource, TElement)), resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TElement), TResult))) As IQueryable(Of TResult)

Parametry typu

TSource

Typ prvků source .The type of the elements of source.

TKey

Typ klíče vrácený funkcí reprezentovanou v keySelector .The type of the key returned by the function represented in keySelector.

TElement

Typ prvků v každé z nich IGrouping<TKey,TElement> .The type of the elements in each IGrouping<TKey,TElement>.

TResult

Typ výsledné hodnoty, kterou vrátí resultSelector .The type of the result value returned by resultSelector.

Parametry

source
IQueryable<TSource>

IQueryable<T>Jejichž prvky mají být seskupeny.An IQueryable<T> whose elements to group.

keySelector
Expression<Func<TSource,TKey>>

Funkce pro extrakci klíče pro každý prvek.A function to extract the key for each element.

elementSelector
Expression<Func<TSource,TElement>>

Funkce pro namapování jednotlivých zdrojových elementů na prvek v IGrouping<TKey,TElement> .A function to map each source element to an element in an IGrouping<TKey,TElement>.

resultSelector
Expression<Func<TKey,IEnumerable<TElement>,TResult>>

Funkce pro vytvoření hodnoty výsledku z každé skupiny.A function to create a result value from each group.

Návraty

IQueryable<TResult>

T:System.Linq.IQueryable ' 1 , který má argument typu TResult a kde každý prvek představuje projekci přes skupinu a její klíč.An T:System.Linq.IQueryable`1 that has a type argument of TResult and where each element represents a projection over a group and its key.

Výjimky

source nebo keySelector nebo elementSelector resultSelector je null .source or keySelector or elementSelector or resultSelector is null.

Příklady

Následující příklad kódu ukazuje, jak použít GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>) k seskupení prvků sekvence a projekt sekvence výsledků typu TResult .The following code example demonstrates how to use GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>) to group the elements of a sequence and project a sequence of results of type TResult.

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

public static void GroupByEx4()
{
    // 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.Age values by the Math.Floor of the 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.AsQueryable().GroupBy(
        pet => Math.Floor(pet.Age),
        pet => pet.Age,
        (baseAge, ages) => new
        {
            Key = baseAge,
            Count = ages.Count(),
            Min = ages.Min(),
            Max = ages.Max()
        });

    // 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
    */
}
Structure Pet
    Public Name As String
    Public Age As Double
End Structure

Shared Sub GroupByEx4()
    ' Create a list of pets.
    Dim petsList As New List(Of Pet)(New Pet() { _
                       New Pet With {.Name = "Barley", .Age = 8.3}, _
                       New Pet With {.Name = "Boots", .Age = 4.9}, _
                       New Pet With {.Name = "Whiskers", .Age = 1.5}, _
                       New Pet With {.Name = "Daisy", .Age = 4.3}})

    ' Group Pet.Age valuesby the Math.Floor of the 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.
    Dim query = petsList.AsQueryable().GroupBy( _
        Function(pet) Math.Floor(pet.Age), _
        Function(pet) pet.Age, _
        Function(baseAge, ages) New With { _
            .Key = baseAge, _
            .Count = ages.Count(), _
            .Min = ages.Min(), _
            .Max = ages.Max() _
        })

    Dim output As New System.Text.StringBuilder
    ' Iterate over each anonymous type.
    For Each result In query
        output.AppendLine(vbCrLf & "Age group: " & result.Key)
        output.AppendLine("Number of pets with this age: " & result.Count)
        output.AppendLine("Minimum age: " & result.Min)
        output.AppendLine("Maximum age: " & result.Max)
    Next

    ' Display the output.
    MsgBox(output.ToString())

    ' This code produces the following output:

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

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

    '  Age group: 1
    '  Number of pets with this age: 1
    '  Minimum age: 1.5
    '  Maximum age: 1.5
End Sub

Poznámky

Tato metoda má alespoň jeden parametr typu, Expression<TDelegate> jehož argumentem typu je jeden z Func<T,TResult> typů.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Pro tyto parametry můžete předat výraz lambda a bude zkompilován do Expression<TDelegate> .For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>)Metoda generuje MethodCallExpression , který reprezentuje volání GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>) sebe sama jako vytvořenou obecnou metodu.The GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>) method generates a MethodCallExpression that represents calling GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>) itself as a constructed generic method. Poté předá MethodCallExpression CreateQuery<TElement>(Expression) metodě IQueryProvider reprezentované Provider vlastností source parametru.It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Chování dotazu, k němuž dojde v důsledku provádění stromu výrazu, který představuje volání, GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>) závisí na implementaci typu source parametru.The query behavior that occurs as a result of executing an expression tree that represents calling GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>) depends on the implementation of the type of the source parameter. Očekávané chování je, že seskupí prvky source podle hodnot klíče, které jsou získány vyvoláním keySelector pro každý prvek.The expected behavior is that it groups the elements of source by key values that are obtained by invoking keySelector on each element. elementSelectorParametr se používá k projekci prvků každé skupiny a resultSelector parametr se používá k získání hodnoty výsledku z každé skupiny a jejího klíče.The elementSelector parameter is used to project the elements of each group, and the resultSelector parameter is used to obtain a result value from each group and its key.

Platí pro

GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>)

Seskupí prvky sekvence podle zadané funkce selektoru klíče a projekty prvků pro každou skupinu pomocí zadané funkce.Groups the elements of a sequence according to a specified key selector function and projects the elements for each group by using a specified function.

public:
generic <typename TSource, typename TKey, typename TElement>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<System::Linq::IGrouping<TKey, TElement> ^> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Linq::Expressions::Expression<Func<TSource, TElement> ^> ^ elementSelector);
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Source, 'Element>> -> System.Linq.IQueryable<System.Linq.IGrouping<'Key, 'Element>>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), elementSelector As Expression(Of Func(Of TSource, TElement))) As IQueryable(Of IGrouping(Of TKey, TElement))

Parametry typu

TSource

Typ prvků source .The type of the elements of source.

TKey

Typ klíče vrácený funkcí reprezentovanou v keySelector .The type of the key returned by the function represented in keySelector.

TElement

Typ prvků v každé z nich IGrouping<TKey,TElement> .The type of the elements in each IGrouping<TKey,TElement>.

Parametry

source
IQueryable<TSource>

IQueryable<T>Jejichž prvky mají být seskupeny.An IQueryable<T> whose elements to group.

keySelector
Expression<Func<TSource,TKey>>

Funkce pro extrakci klíče pro každý prvek.A function to extract the key for each element.

elementSelector
Expression<Func<TSource,TElement>>

Funkce pro namapování jednotlivých zdrojových elementů na prvek v IGrouping<TKey,TElement> .A function to map each source element to an element in an IGrouping<TKey,TElement>.

Návraty

IQueryable<IGrouping<TKey,TElement>>

Rozhraní IQueryable < IGrouping < TKey, TElement > > v jazyce C# nebo IQueryable (z IGrouping (Of TKey, TElement)) v Visual Basic, kde každá IGrouping<TKey,TElement> obsahuje sekvenci objektů typu TElement a klíč.An IQueryable<IGrouping<TKey, TElement>> in C# or IQueryable(Of IGrouping(Of TKey, TElement)) in Visual Basic where each IGrouping<TKey,TElement> contains a sequence of objects of type TElement and a key.

Výjimky

source nebo keySelector elementSelector je null .source or keySelector or elementSelector is null.

Příklady

Následující příklad kódu ukazuje, jak použít GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) k seskupení prvků sekvence.The following code example demonstrates how to use GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) to group the elements of a sequence.

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
*/

Structure Pet
    Public Name As String
    Public Age As Integer
End Structure

Shared Sub GroupByEx2()
    ' Create a list of Pet objects.
    Dim pets As New List(Of Pet)(New Pet() { _
                    New Pet With {.Name = "Barley", .Age = 8}, _
                    New Pet With {.Name = "Boots", .Age = 4}, _
                    New Pet With {.Name = "Whiskers", .Age = 1}, _
                    New Pet With {.Name = "Daisy", .Age = 4}})

    ' Group the pets using Pet.Age as the key.
    ' Use Pet.Name as the value for each entry.
    Dim query As IEnumerable(Of IGrouping(Of Integer, String)) = _
        pets.AsQueryable().GroupBy(Function(pet) pet.Age, Function(pet) pet.Name)

    Dim output As New System.Text.StringBuilder
    ' Iterate over each IGrouping in the collection.
    For Each petGroup As IGrouping(Of Integer, String) In query
        ' Print the key value of the IGrouping.
        output.AppendLine(petGroup.Key)
        ' Iterate over each value in the 
        ' IGrouping and print the value.
        For Each name As String In petGroup
            output.AppendLine(String.Format("  {0}", name))
        Next
    Next

    ' Display the output.
    MsgBox(output.ToString())
End Sub

' This code produces the following output:
'
' 8
'  Barley
' 4
'  Boots
'  Daisy
' 1
'  Whiskers

Poznámky

Tato metoda má alespoň jeden parametr typu, Expression<TDelegate> jehož argumentem typu je jeden z Func<T,TResult> typů.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Pro tyto parametry můžete předat výraz lambda a bude zkompilován do Expression<TDelegate> .For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>)Metoda generuje MethodCallExpression , který reprezentuje volání GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) sebe sama jako vytvořenou obecnou metodu.The GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) method generates a MethodCallExpression that represents calling GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) itself as a constructed generic method. Poté předá MethodCallExpression CreateQuery<TElement>(Expression) metodě IQueryProvider reprezentované Provider vlastností source parametru.It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Chování dotazu, k němuž dojde v důsledku provádění stromu výrazu, který představuje volání, GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) závisí na implementaci typu source parametru.The query behavior that occurs as a result of executing an expression tree that represents calling GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) depends on the implementation of the type of the source parameter. Očekávané chování je, že seskupí prvky source podle hodnoty klíče, která je získána vyvoláním keySelector pro každý prvek.The expected behavior is that it groups the elements of source by a key value that is obtained by invoking keySelector on each element. Vyvolá elementSelector na každém elementu pro získání prvku výsledku.It invokes elementSelector on each element to obtain a result element.

Platí pro

GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>)

Seskupí prvky sekvence a rozprojektech prvky pro každou skupinu pomocí zadané funkce.Groups the elements of a sequence and projects the elements for each group by using a specified function. Hodnoty klíčů jsou porovnány pomocí zadané porovnávací metody.Key values are compared by using a specified comparer.

public:
generic <typename TSource, typename TKey, typename TElement>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<System::Linq::IGrouping<TKey, TElement> ^> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Linq::Expressions::Expression<Func<TSource, TElement> ^> ^ elementSelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Source, 'Element>> * System.Collections.Generic.IEqualityComparer<'Key> -> System.Linq.IQueryable<System.Linq.IGrouping<'Key, 'Element>>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), elementSelector As Expression(Of Func(Of TSource, TElement)), comparer As IEqualityComparer(Of TKey)) As IQueryable(Of IGrouping(Of TKey, TElement))

Parametry typu

TSource

Typ prvků source .The type of the elements of source.

TKey

Typ klíče vrácený funkcí reprezentovanou v keySelector .The type of the key returned by the function represented in keySelector.

TElement

Typ prvků v každé z nich IGrouping<TKey,TElement> .The type of the elements in each IGrouping<TKey,TElement>.

Parametry

source
IQueryable<TSource>

IQueryable<T>Jejichž prvky mají být seskupeny.An IQueryable<T> whose elements to group.

keySelector
Expression<Func<TSource,TKey>>

Funkce pro extrakci klíče pro každý prvek.A function to extract the key for each element.

elementSelector
Expression<Func<TSource,TElement>>

Funkce pro namapování jednotlivých zdrojových elementů na prvek v IGrouping<TKey,TElement> .A function to map each source element to an element in an IGrouping<TKey,TElement>.

comparer
IEqualityComparer<TKey>

IEqualityComparer<T>K porovnání klíčů.An IEqualityComparer<T> to compare keys.

Návraty

IQueryable<IGrouping<TKey,TElement>>

Rozhraní IQueryable < IGrouping < TKey, TElement > > v jazyce C# nebo IQueryable (z IGrouping (Of TKey, TElement)) v Visual Basic, kde každá IGrouping<TKey,TElement> obsahuje sekvenci objektů typu TElement a klíč.An IQueryable<IGrouping<TKey, TElement>> in C# or IQueryable(Of IGrouping(Of TKey, TElement)) in Visual Basic where each IGrouping<TKey,TElement> contains a sequence of objects of type TElement and a key.

Výjimky

source nebo keySelector nebo elementSelector comparer je null .source or keySelector or elementSelector or comparer is null.

Poznámky

Tato metoda má alespoň jeden parametr typu, Expression<TDelegate> jehož argumentem typu je jeden z Func<T,TResult> typů.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Pro tyto parametry můžete předat výraz lambda a bude zkompilován do Expression<TDelegate> .For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>)Metoda generuje MethodCallExpression , který reprezentuje volání GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>) sebe sama jako vytvořenou obecnou metodu.The GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>) method generates a MethodCallExpression that represents calling GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>) itself as a constructed generic method. Poté předá MethodCallExpression CreateQuery<TElement>(Expression) metodě IQueryProvider reprezentované Provider vlastností source parametru.It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Chování dotazu, k němuž dojde v důsledku provádění stromu výrazu, který představuje volání, GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>) závisí na implementaci typu source parametru.The query behavior that occurs as a result of executing an expression tree that represents calling GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>) depends on the implementation of the type of the source parameter. Očekávané chování je, že seskupí prvky source podle hodnoty klíče, která je získána vyvoláním keySelector pro každý prvek.The expected behavior is that it groups the elements of source by a key value that is obtained by invoking keySelector on each element. Hodnoty klíčů jsou porovnány pomocí comparer .Key values are compared by using comparer. elementSelectorParametr je vyvolán u každého prvku pro získání prvku výsledku.The elementSelector parameter is invoked on each element to obtain a result element.

Platí pro

GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>)

Seskupí prvky sekvence podle zadané funkce selektoru klíče a vytvoří výslednou hodnotu z každé skupiny a jejího klíče.Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key.

public:
generic <typename TSource, typename TKey, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<TResult> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Linq::Expressions::Expression<Func<TKey, System::Collections::Generic::IEnumerable<TSource> ^, TResult> ^> ^ resultSelector);
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TResult> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>> resultSelector);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Key, seq<'Source>, 'Result>> -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TResult) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TSource), TResult))) As IQueryable(Of TResult)

Parametry typu

TSource

Typ prvků source .The type of the elements of source.

TKey

Typ klíče vrácený funkcí reprezentovanou v keySelector .The type of the key returned by the function represented in keySelector.

TResult

Typ výsledné hodnoty, kterou vrátí resultSelector .The type of the result value returned by resultSelector.

Parametry

source
IQueryable<TSource>

IQueryable<T>Jejichž prvky mají být seskupeny.An IQueryable<T> whose elements to group.

keySelector
Expression<Func<TSource,TKey>>

Funkce pro extrakci klíče pro každý prvek.A function to extract the key for each element.

resultSelector
Expression<Func<TKey,IEnumerable<TSource>,TResult>>

Funkce pro vytvoření hodnoty výsledku z každé skupiny.A function to create a result value from each group.

Návraty

IQueryable<TResult>

T:System.Linq.IQueryable ' 1 , který má argument typu TResult a kde každý prvek představuje projekci přes skupinu a její klíč.An T:System.Linq.IQueryable`1 that has a type argument of TResult and where each element represents a projection over a group and its key.

Výjimky

source nebo keySelector resultSelector je null .source or keySelector or resultSelector is null.

Příklady

Následující příklad kódu ukazuje, jak použít GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) k seskupení prvků sekvence a projekt sekvence výsledků typu TResult .The following code example demonstrates how to use GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) to group the elements of a sequence and project a sequence of results of type 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.AsQueryable().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
    */
}
Structure Pet
    Public Name As String
    Public Age As Double
End Structure

Shared Sub GroupByEx3()
    ' Create a list of pets.
    Dim petsList As New List(Of Pet)(New Pet() { _
                       New Pet With {.Name = "Barley", .Age = 8.3}, _
                       New Pet With {.Name = "Boots", .Age = 4.9}, _
                       New Pet With {.Name = "Whiskers", .Age = 1.5}, _
                       New Pet With {.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.
    Dim query = petsList.AsQueryable().GroupBy( _
        Function(pet) Math.Floor(pet.Age), _
        Function(age, pets) New With { _
            .Key = age, _
            .Count = pets.Count(), _
            .Min = pets.Min(Function(pet) pet.Age), _
            .Max = pets.Max(Function(pet) pet.Age) _
        })

    Dim output As New System.Text.StringBuilder
    ' Iterate over each anonymous type.
    For Each result In query
        output.AppendLine(vbCrLf & "Age group: " & result.Key)
        output.AppendLine("Number of pets with this age: " & result.Count)
        output.AppendLine("Minimum age: " & result.Min)
        output.AppendLine("Maximum age: " & result.Max)
    Next

    ' Display the output.
    MsgBox(output.ToString())

    ' This code produces the following output:

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

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

    '  Age group: 1
    '  Number of pets with this age: 1
    '  Minimum age: 1.5
    '  Maximum age: 1.5
End Sub

Poznámky

Tato metoda má alespoň jeden parametr typu, Expression<TDelegate> jehož argumentem typu je jeden z Func<T,TResult> typů.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Pro tyto parametry můžete předat výraz lambda a bude zkompilován do Expression<TDelegate> .For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>)Metoda generuje MethodCallExpression , který reprezentuje volání GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) sebe sama jako vytvořenou obecnou metodu.The GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) method generates a MethodCallExpression that represents calling GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) itself as a constructed generic method. Poté předá MethodCallExpression CreateQuery<TElement>(Expression) metodě IQueryProvider reprezentované Provider vlastností source parametru.It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Chování dotazu, k němuž dojde v důsledku provádění stromu výrazu, který představuje volání, GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) závisí na implementaci typu source parametru.The query behavior that occurs as a result of executing an expression tree that represents calling GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) depends on the implementation of the type of the source parameter. Očekávané chování je, že seskupí prvky source podle hodnoty klíče, která je získána vyvoláním keySelector pro každý prvek.The expected behavior is that it groups the elements of source by a key value that is obtained by invoking keySelector on each element. resultSelectorParametr se používá k získání hodnoty výsledku z každé skupiny a jejího klíče.The resultSelector parameter is used to obtain a result value from each group and its key.

Platí pro

GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>)

Seskupí prvky sekvence podle zadané funkce selektoru klíče a vytvoří výslednou hodnotu z každé skupiny a jejího klíče.Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key. Klíče se porovnávají pomocí zadané porovnávací metody.Keys are compared by using a specified comparer.

public:
generic <typename TSource, typename TKey, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<TResult> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Linq::Expressions::Expression<Func<TKey, System::Collections::Generic::IEnumerable<TSource> ^, TResult> ^> ^ resultSelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TResult> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>> resultSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TResult> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>> resultSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Key, seq<'Source>, 'Result>> * System.Collections.Generic.IEqualityComparer<'Key> -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TResult) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TSource), TResult)), comparer As IEqualityComparer(Of TKey)) As IQueryable(Of TResult)

Parametry typu

TSource

Typ prvků source .The type of the elements of source.

TKey

Typ klíče vrácený funkcí reprezentovanou v keySelector .The type of the key returned by the function represented in keySelector.

TResult

Typ výsledné hodnoty, kterou vrátí resultSelector .The type of the result value returned by resultSelector.

Parametry

source
IQueryable<TSource>

IQueryable<T>Jejichž prvky mají být seskupeny.An IQueryable<T> whose elements to group.

keySelector
Expression<Func<TSource,TKey>>

Funkce pro extrakci klíče pro každý prvek.A function to extract the key for each element.

resultSelector
Expression<Func<TKey,IEnumerable<TSource>,TResult>>

Funkce pro vytvoření hodnoty výsledku z každé skupiny.A function to create a result value from each group.

comparer
IEqualityComparer<TKey>

IEqualityComparer<T>K porovnání klíčů.An IEqualityComparer<T> to compare keys.

Návraty

IQueryable<TResult>

T:System.Linq.IQueryable ' 1 , který má argument typu TResult a kde každý prvek představuje projekci přes skupinu a její klíč.An T:System.Linq.IQueryable`1 that has a type argument of TResult and where each element represents a projection over a group and its key.

Výjimky

source nebo keySelector nebo resultSelector comparer je null .source or keySelector or resultSelector or comparer is null.

Poznámky

Tato metoda má alespoň jeden parametr typu, Expression<TDelegate> jehož argumentem typu je jeden z Func<T,TResult> typů.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Pro tyto parametry můžete předat výraz lambda a bude zkompilován do Expression<TDelegate> .For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>)Metoda generuje MethodCallExpression , který reprezentuje volání GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>) sebe sama jako vytvořenou obecnou metodu.The GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>) method generates a MethodCallExpression that represents calling GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>) itself as a constructed generic method. Poté předá MethodCallExpression CreateQuery<TElement>(Expression) metodě IQueryProvider reprezentované Provider vlastností source parametru.It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Chování dotazu, k němuž dojde v důsledku provádění stromu výrazu, který představuje volání, GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>) závisí na implementaci typu source parametru.The query behavior that occurs as a result of executing an expression tree that represents calling GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>) depends on the implementation of the type of the source parameter. Očekávané chování je, že seskupí prvky source podle hodnot klíče, které jsou získány vyvoláním keySelector pro každý prvek.The expected behavior is that it groups the elements of source by key values that are obtained by invoking keySelector on each element. comparerParametr se používá k porovnání klíčů a resultSelector parametr se používá k získání hodnoty výsledku z každé skupiny a jejího klíče.The comparer parameter is used to compare keys and the resultSelector parameter is used to obtain a result value from each group and its key.

Platí pro

GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>)

Seskupí prvky sekvence podle zadané funkce selektoru klíče a porovná klíče s použitím zadané porovnávací metody.Groups the elements of a sequence according to a specified key selector function and compares the keys by using a specified comparer.

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<System::Linq::IGrouping<TKey, TSource> ^> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Collections.Generic.IEqualityComparer<'Key> -> System.Linq.IQueryable<System.Linq.IGrouping<'Key, 'Source>>
<Extension()>
Public Function GroupBy(Of TSource, TKey) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), comparer As IEqualityComparer(Of TKey)) As IQueryable(Of IGrouping(Of TKey, TSource))

Parametry typu

TSource

Typ prvků source .The type of the elements of source.

TKey

Typ klíče vrácený funkcí reprezentovanou v keySelector .The type of the key returned by the function represented in keySelector.

Parametry

source
IQueryable<TSource>

IQueryable<T>Jejichž prvky mají být seskupeny.An IQueryable<T> whose elements to group.

keySelector
Expression<Func<TSource,TKey>>

Funkce pro extrakci klíče pro každý prvek.A function to extract the key for each element.

comparer
IEqualityComparer<TKey>

IEqualityComparer<T>K porovnání klíčů.An IEqualityComparer<T> to compare keys.

Návraty

IQueryable<IGrouping<TKey,TSource>>

Rozhraní IQueryable < IGrouping < TKey, TSource > > v C# nebo IQueryable (z IGrouping (Of TKey, TSource)) v Visual Basic, kde každá IGrouping<TKey,TElement> obsahuje sekvenci objektů a klíč.An IQueryable<IGrouping<TKey, TSource>> in C# or IQueryable(Of IGrouping(Of TKey, TSource)) in Visual Basic where each IGrouping<TKey,TElement> contains a sequence of objects and a key.

Výjimky

source nebo keySelector comparer je null .source or keySelector or comparer is null.

Poznámky

Tato metoda má alespoň jeden parametr typu, Expression<TDelegate> jehož argumentem typu je jeden z Func<T,TResult> typů.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Pro tyto parametry můžete předat výraz lambda a bude zkompilován do Expression<TDelegate> .For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>)Metoda generuje MethodCallExpression , který reprezentuje volání GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>) sebe sama jako vytvořenou obecnou metodu.The GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>) method generates a MethodCallExpression that represents calling GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>) itself as a constructed generic method. Poté předá MethodCallExpression CreateQuery<TElement>(Expression) metodě IQueryProvider reprezentované Provider vlastností source parametru.It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Chování dotazu, k němuž dojde v důsledku provádění stromu výrazu, který představuje volání, GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>) závisí na implementaci typu source parametru.The query behavior that occurs as a result of executing an expression tree that represents calling GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>) depends on the implementation of the type of the source parameter. Očekávané chování je, že seskupí prvky source podle hodnoty klíče.The expected behavior is that it groups the elements of source by a key value. Hodnota klíče je získána vyvoláním keySelector pro každý prvek a hodnoty klíče jsou porovnány pomocí comparer .The key value is obtained by invoking keySelector on each element, and key values are compared by using comparer.

Platí pro

GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>)

Seskupí prvky sekvence podle zadané funkce selektoru klíče.Groups the elements of a sequence according to a specified key selector function.

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<System::Linq::IGrouping<TKey, TSource> ^> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector);
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> -> System.Linq.IQueryable<System.Linq.IGrouping<'Key, 'Source>>
<Extension()>
Public Function GroupBy(Of TSource, TKey) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey))) As IQueryable(Of IGrouping(Of TKey, TSource))

Parametry typu

TSource

Typ prvků source .The type of the elements of source.

TKey

Typ klíče vrácený funkcí reprezentovanou v keySelector .The type of the key returned by the function represented in keySelector.

Parametry

source
IQueryable<TSource>

IQueryable<T>Jejichž prvky mají být seskupeny.An IQueryable<T> whose elements to group.

keySelector
Expression<Func<TSource,TKey>>

Funkce pro extrakci klíče pro každý prvek.A function to extract the key for each element.

Návraty

IQueryable<IGrouping<TKey,TSource>>

Rozhraní IQueryable < IGrouping < TKey, TSource > > v C# nebo IQueryable (z IGrouping (Of TKey, TSource)) v Visual Basic, kde každý IGrouping<TKey,TElement> objekt obsahuje sekvenci objektů a klíč.An IQueryable<IGrouping<TKey, TSource>> in C# or IQueryable(Of IGrouping(Of TKey, TSource)) in Visual Basic where each IGrouping<TKey,TElement> object contains a sequence of objects and a key.

Výjimky

source nebo keySelector je null .source or keySelector is null.

Příklady

Následující příklad kódu ukazuje, jak použít GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) k seskupení prvků sekvence.The following code example demonstrates how to use GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) to group the elements of a sequence.

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

public static void GroupByEx1()
{
    // 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.
    var query = pets.AsQueryable().GroupBy(pet => pet.Age);

    // Iterate over each IGrouping in the collection.
    foreach (var ageGroup in query)
    {
        Console.WriteLine("Age group: {0}  Number of pets: {1}", ageGroup.Key, ageGroup.Count());
    }
}

/*
    This code produces the following output:

    Age group: 8  Number of pets: 1
    Age group: 4  Number of pets: 2
    Age group: 1  Number of pets: 1

*/

Structure Pet
    Public Name As String
    Public Age As Integer
End Structure

Shared Sub GroupByEx1()
    ' Create a list of Pet objects.
    Dim pets As New List(Of Pet)(New Pet() { _
                    New Pet With {.Name = "Barley", .Age = 8}, _
                    New Pet With {.Name = "Boots", .Age = 4}, _
                    New Pet With {.Name = "Whiskers", .Age = 1}, _
                    New Pet With {.Name = "Daisy", .Age = 4}})

    ' Group the pets using Pet.Age as the key.
    ' Use Pet.Name as the value for each entry.
    Dim query = pets.AsQueryable().GroupBy(Function(pet) pet.Age)

    Dim output As New System.Text.StringBuilder
    ' Iterate over each IGrouping in the collection.
    For Each ageGroup In query
        output.AppendFormat("Age group: {0}   Number of pets: {1}{2}", ageGroup.Key, ageGroup.Count(), vbCrLf)
    Next

    ' Display the output.
    MsgBox(output.ToString())
End Sub

' This code produces the following output:
'
' Age group: 8   Number of pets: 1
' Age group: 4   Number of pets: 2
' Age group: 1   Number of pets: 1

Poznámky

Tato metoda má alespoň jeden parametr typu, Expression<TDelegate> jehož argumentem typu je jeden z Func<T,TResult> typů.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Pro tyto parametry můžete předat výraz lambda a bude zkompilován do Expression<TDelegate> .For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>)Metoda generuje MethodCallExpression , který reprezentuje volání GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) sebe sama jako vytvořenou obecnou metodu.The GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) method generates a MethodCallExpression that represents calling GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) itself as a constructed generic method. Poté předá MethodCallExpression CreateQuery<TElement>(Expression) metodě IQueryProvider reprezentované Provider vlastností source parametru.It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Chování dotazu, k němuž dojde v důsledku provádění stromu výrazu, který představuje volání, GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) závisí na implementaci typu source parametru.The query behavior that occurs as a result of executing an expression tree that represents calling GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) depends on the implementation of the type of the source parameter. Očekávané chování je, že seskupí prvky source podle hodnoty klíče, která je získána vyvoláním keySelector pro každý prvek.The expected behavior is that it groups the elements of source by a key value that is obtained by invoking keySelector on each element.

Platí pro