Queryable.GroupBy Metodo

Definizione

Raggruppa gli elementi di una sequenza.Groups the elements of a sequence.

Overload

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

Raggruppa gli elementi di una sequenza in base a una funzione del selettore principale specificata e crea un valore risultante da ciascun gruppo e relativa chiave.Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key. Le chiavi sono confrontate utilizzando un operatore di confronto specificato e gli elementi di ogni gruppo vengono proiettati utilizzando una funzione specificata.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>>)

Raggruppa gli elementi di una sequenza in base a una funzione del selettore principale specificata e crea un valore risultante da ciascun gruppo e relativa chiave.Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key. Gli elementi di ogni gruppo vengono proiettati usando una funzione specificata.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>>)

Raggruppa gli elementi di una sequenza in base a una funzione specificata del selettore principale e proietta gli elementi di ogni gruppo utilizzando una funzione specificata.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>)

Raggruppa gli elementi di una sequenza e proietta gli elementi di ogni gruppo utilizzando una funzione specificata.Groups the elements of a sequence and projects the elements for each group by using a specified function. I valori chiave vengono confrontati utilizzando un operatore di confronto specificato.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>>)

Raggruppa gli elementi di una sequenza in base a una funzione del selettore principale specificata e crea un valore risultante da ciascun gruppo e relativa chiave.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>)

Raggruppa gli elementi di una sequenza in base a una funzione del selettore principale specificata e crea un valore risultante da ciascun gruppo e relativa chiave.Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key. Le chiavi vengono confrontate utilizzando un operatore di confronto specificato.Keys are compared by using a specified comparer.

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

Raggruppa gli elementi di una sequenza secondo una specificata funzione del selettore principale e confronta le chiavi utilizzando un operatore di confronto specificato.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>>)

Raggruppa gli elementi di una sequenza secondo una specificata funzione del selettore principale.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>)

Raggruppa gli elementi di una sequenza in base a una funzione del selettore principale specificata e crea un valore risultante da ciascun gruppo e relativa chiave.Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key. Le chiavi sono confrontate utilizzando un operatore di confronto specificato e gli elementi di ogni gruppo vengono proiettati utilizzando una funzione specificata.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)

Parametri di tipo

TSource

Tipo degli elementi di source.The type of the elements of source.

TKey

Tipo della chiave restituita dalla funzione rappresentata nell'oggetto keySelector.The type of the key returned by the function represented in keySelector.

TElement

Tipo degli elementi contenuti in ciascun oggetto IGrouping<TKey,TElement>.The type of the elements in each IGrouping<TKey,TElement>.

TResult

Tipo del valore restituito dall'oggetto resultSelector.The type of the result value returned by resultSelector.

Parametri

source
IQueryable<TSource>

Oggetto IQueryable<T> i cui elementi sono da raggruppare.An IQueryable<T> whose elements to group.

keySelector
Expression<Func<TSource,TKey>>

Funzione per estrarre la chiave per ogni elemento.A function to extract the key for each element.

elementSelector
Expression<Func<TSource,TElement>>

Funzione per eseguire il mapping di ogni elemento di origine a un elemento in un oggetto 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>>

Funzione per creare un valore di risultato da ogni gruppo.A function to create a result value from each group.

comparer
IEqualityComparer<TKey>

Oggetto IEqualityComparer<T> per confrontare le chiavi.An IEqualityComparer<T> to compare keys.

Restituisce

IQueryable<TResult>

Oggetto T:System.Linq.IQueryable`1 che ha un argomento di tipo TResult e in cui ogni elemento rappresenta una proiezione su un gruppo e sulla relativa chiave.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.

Eccezioni

source o keySelector o elementSelector o resultSelector o comparer è null.source or keySelector or elementSelector or resultSelector or comparer is null.

Commenti

Questo metodo ha almeno un parametro di tipo Expression<TDelegate> il cui argomento di tipo è uno dei Func<T,TResult> tipi.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Per questi parametri, è possibile passare un'espressione lambda che verrà compilata in un oggetto Expression<TDelegate> .For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

Il GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>) metodo genera un oggetto MethodCallExpression che rappresenta la chiamata a GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>) se stesso come metodo generico costruito.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. Passa quindi al MethodCallExpression CreateQuery<TElement>(Expression) metodo dell'oggetto IQueryProvider rappresentato dalla Provider proprietà del source parametro.It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Il comportamento della query che si verifica in seguito all'esecuzione di un albero delle espressioni che rappresenta la chiamata GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>) dipende dall'implementazione del tipo di source parametro.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. Il comportamento previsto è che raggruppa gli elementi di source in base ai valori di chiave ottenuti richiamando keySelector su ogni elemento.The expected behavior is that it groups the elements of source by key values that are obtained by invoking keySelector on each element. Il comparer parametro viene utilizzato per confrontare i valori di chiave.The comparer parameter is used to compare key values. Il elementSelector parametro viene usato per proiettare gli elementi di ogni gruppo e il resultSelector parametro viene usato per ottenere un valore di risultato da ogni gruppo e dalla relativa chiave.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.

Si applica a

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

Raggruppa gli elementi di una sequenza in base a una funzione del selettore principale specificata e crea un valore risultante da ciascun gruppo e relativa chiave.Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key. Gli elementi di ogni gruppo vengono proiettati usando una funzione specificata.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)

Parametri di tipo

TSource

Tipo degli elementi di source.The type of the elements of source.

TKey

Tipo della chiave restituita dalla funzione rappresentata nell'oggetto keySelector.The type of the key returned by the function represented in keySelector.

TElement

Tipo degli elementi contenuti in ciascun oggetto IGrouping<TKey,TElement>.The type of the elements in each IGrouping<TKey,TElement>.

TResult

Tipo del valore restituito dall'oggetto resultSelector.The type of the result value returned by resultSelector.

Parametri

source
IQueryable<TSource>

Oggetto IQueryable<T> i cui elementi sono da raggruppare.An IQueryable<T> whose elements to group.

keySelector
Expression<Func<TSource,TKey>>

Funzione per estrarre la chiave per ogni elemento.A function to extract the key for each element.

elementSelector
Expression<Func<TSource,TElement>>

Funzione per eseguire il mapping di ogni elemento di origine a un elemento in un oggetto 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>>

Funzione per creare un valore di risultato da ogni gruppo.A function to create a result value from each group.

Restituisce

IQueryable<TResult>

Oggetto T:System.Linq.IQueryable`1 che ha un argomento di tipo TResult e in cui ogni elemento rappresenta una proiezione su un gruppo e sulla relativa chiave.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.

Eccezioni

source, keySelector, elementSelector o resultSelector è null.source or keySelector or elementSelector or resultSelector is null.

Esempio

Nell'esempio di codice riportato di seguito viene illustrato come utilizzare GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>) per raggruppare gli elementi di una sequenza e proiettare una sequenza di risultati di tipo 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

Commenti

Questo metodo ha almeno un parametro di tipo Expression<TDelegate> il cui argomento di tipo è uno dei Func<T,TResult> tipi.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Per questi parametri, è possibile passare un'espressione lambda che verrà compilata in un oggetto Expression<TDelegate> .For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

Il GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>) metodo genera un oggetto MethodCallExpression che rappresenta la chiamata a GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>) se stesso come metodo generico costruito.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. Passa quindi al MethodCallExpression CreateQuery<TElement>(Expression) metodo dell'oggetto IQueryProvider rappresentato dalla Provider proprietà del source parametro.It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Il comportamento della query che si verifica in seguito all'esecuzione di un albero delle espressioni che rappresenta la chiamata GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey,IEnumerable<TElement>,TResult>>) dipende dall'implementazione del tipo di source parametro.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. Il comportamento previsto è che raggruppa gli elementi di source in base ai valori di chiave ottenuti richiamando keySelector su ogni elemento.The expected behavior is that it groups the elements of source by key values that are obtained by invoking keySelector on each element. Il elementSelector parametro viene usato per proiettare gli elementi di ogni gruppo e il resultSelector parametro viene usato per ottenere un valore di risultato da ogni gruppo e dalla relativa chiave.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.

Si applica a

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

Raggruppa gli elementi di una sequenza in base a una funzione specificata del selettore principale e proietta gli elementi di ogni gruppo utilizzando una funzione specificata.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))

Parametri di tipo

TSource

Tipo degli elementi di source.The type of the elements of source.

TKey

Tipo della chiave restituita dalla funzione rappresentata nell'oggetto keySelector.The type of the key returned by the function represented in keySelector.

TElement

Tipo degli elementi contenuti in ciascun oggetto IGrouping<TKey,TElement>.The type of the elements in each IGrouping<TKey,TElement>.

Parametri

source
IQueryable<TSource>

Oggetto IQueryable<T> i cui elementi sono da raggruppare.An IQueryable<T> whose elements to group.

keySelector
Expression<Func<TSource,TKey>>

Funzione per estrarre la chiave per ogni elemento.A function to extract the key for each element.

elementSelector
Expression<Func<TSource,TElement>>

Funzione per eseguire il mapping di ogni elemento di origine a un elemento in un oggetto IGrouping<TKey,TElement>.A function to map each source element to an element in an IGrouping<TKey,TElement>.

Restituisce

IQueryable<IGrouping<TKey,TElement>>

Elemento IQueryable<IGrouping<TKey, TElement>> in C# o IQueryable(Of IGrouping(Of TKey, TElement)) in Visual Basic in cui ogni oggetto IGrouping<TKey,TElement> contiene una sequenza di oggetti di tipo TElement e una chiave.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.

Eccezioni

Il parametro source, il parametro keySelector o il parametro elementSelector è null.source or keySelector or elementSelector is null.

Esempio

Nell'esempio di codice riportato di seguito viene illustrato come utilizzare GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) per raggruppare gli elementi di una sequenza.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

Commenti

Questo metodo ha almeno un parametro di tipo Expression<TDelegate> il cui argomento di tipo è uno dei Func<T,TResult> tipi.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Per questi parametri, è possibile passare un'espressione lambda che verrà compilata in un oggetto Expression<TDelegate> .For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

Il GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) metodo genera un oggetto MethodCallExpression che rappresenta la chiamata a GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) se stesso come metodo generico costruito.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. Passa quindi al MethodCallExpression CreateQuery<TElement>(Expression) metodo dell'oggetto IQueryProvider rappresentato dalla Provider proprietà del source parametro.It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Il comportamento della query che si verifica in seguito all'esecuzione di un albero delle espressioni che rappresenta la chiamata GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) dipende dall'implementazione del tipo di source parametro.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. Il comportamento previsto è che raggruppa gli elementi di source in base a un valore di chiave ottenuto richiamando keySelector su ogni elemento.The expected behavior is that it groups the elements of source by a key value that is obtained by invoking keySelector on each element. Richiama elementSelector su ogni elemento per ottenere un elemento di risultato.It invokes elementSelector on each element to obtain a result element.

Si applica a

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

Raggruppa gli elementi di una sequenza e proietta gli elementi di ogni gruppo utilizzando una funzione specificata.Groups the elements of a sequence and projects the elements for each group by using a specified function. I valori chiave vengono confrontati utilizzando un operatore di confronto specificato.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))

Parametri di tipo

TSource

Tipo degli elementi di source.The type of the elements of source.

TKey

Tipo della chiave restituita dalla funzione rappresentata nell'oggetto keySelector.The type of the key returned by the function represented in keySelector.

TElement

Tipo degli elementi contenuti in ciascun oggetto IGrouping<TKey,TElement>.The type of the elements in each IGrouping<TKey,TElement>.

Parametri

source
IQueryable<TSource>

Oggetto IQueryable<T> i cui elementi sono da raggruppare.An IQueryable<T> whose elements to group.

keySelector
Expression<Func<TSource,TKey>>

Funzione per estrarre la chiave per ogni elemento.A function to extract the key for each element.

elementSelector
Expression<Func<TSource,TElement>>

Funzione per eseguire il mapping di ogni elemento di origine a un elemento in un oggetto IGrouping<TKey,TElement>.A function to map each source element to an element in an IGrouping<TKey,TElement>.

comparer
IEqualityComparer<TKey>

Oggetto IEqualityComparer<T> per confrontare le chiavi.An IEqualityComparer<T> to compare keys.

Restituisce

IQueryable<IGrouping<TKey,TElement>>

Elemento IQueryable<IGrouping<TKey, TElement>> in C# o IQueryable(Of IGrouping(Of TKey, TElement)) in Visual Basic in cui ogni oggetto IGrouping<TKey,TElement> contiene una sequenza di oggetti di tipo TElement e una chiave.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.

Eccezioni

source, keySelector, elementSelector o comparer è null.source or keySelector or elementSelector or comparer is null.

Commenti

Questo metodo ha almeno un parametro di tipo Expression<TDelegate> il cui argomento di tipo è uno dei Func<T,TResult> tipi.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Per questi parametri, è possibile passare un'espressione lambda che verrà compilata in un oggetto Expression<TDelegate> .For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

Il GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>) metodo genera un oggetto MethodCallExpression che rappresenta la chiamata a GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>) se stesso come metodo generico costruito.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. Passa quindi al MethodCallExpression CreateQuery<TElement>(Expression) metodo dell'oggetto IQueryProvider rappresentato dalla Provider proprietà del source parametro.It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Il comportamento della query che si verifica in seguito all'esecuzione di un albero delle espressioni che rappresenta la chiamata GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>) dipende dall'implementazione del tipo di source parametro.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. Il comportamento previsto è che raggruppa gli elementi di source in base a un valore di chiave ottenuto richiamando keySelector su ogni elemento.The expected behavior is that it groups the elements of source by a key value that is obtained by invoking keySelector on each element. I valori delle chiavi vengono confrontati tramite comparer .Key values are compared by using comparer. Il elementSelector parametro viene richiamato su ogni elemento per ottenere un elemento di risultato.The elementSelector parameter is invoked on each element to obtain a result element.

Si applica a

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

Raggruppa gli elementi di una sequenza in base a una funzione del selettore principale specificata e crea un valore risultante da ciascun gruppo e relativa chiave.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)

Parametri di tipo

TSource

Tipo degli elementi di source.The type of the elements of source.

TKey

Tipo della chiave restituita dalla funzione rappresentata nell'oggetto keySelector.The type of the key returned by the function represented in keySelector.

TResult

Tipo del valore restituito dall'oggetto resultSelector.The type of the result value returned by resultSelector.

Parametri

source
IQueryable<TSource>

Oggetto IQueryable<T> i cui elementi sono da raggruppare.An IQueryable<T> whose elements to group.

keySelector
Expression<Func<TSource,TKey>>

Funzione per estrarre la chiave per ogni elemento.A function to extract the key for each element.

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

Funzione per creare un valore di risultato da ogni gruppo.A function to create a result value from each group.

Restituisce

IQueryable<TResult>

Oggetto T:System.Linq.IQueryable`1 che ha un argomento di tipo TResult e in cui ogni elemento rappresenta una proiezione su un gruppo e sulla relativa chiave.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.

Eccezioni

Il parametro source, il parametro keySelector o il parametro resultSelector è null.source or keySelector or resultSelector is null.

Esempio

Nell'esempio di codice riportato di seguito viene illustrato come utilizzare GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) per raggruppare gli elementi di una sequenza e proiettare una sequenza di risultati di tipo 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

Commenti

Questo metodo ha almeno un parametro di tipo Expression<TDelegate> il cui argomento di tipo è uno dei Func<T,TResult> tipi.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Per questi parametri, è possibile passare un'espressione lambda che verrà compilata in un oggetto Expression<TDelegate> .For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

Il GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) metodo genera un oggetto MethodCallExpression che rappresenta la chiamata a GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) se stesso come metodo generico costruito.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. Passa quindi al MethodCallExpression CreateQuery<TElement>(Expression) metodo dell'oggetto IQueryProvider rappresentato dalla Provider proprietà del source parametro.It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Il comportamento della query che si verifica in seguito all'esecuzione di un albero delle espressioni che rappresenta la chiamata GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) dipende dall'implementazione del tipo di source parametro.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. Il comportamento previsto è che raggruppa gli elementi di source in base a un valore di chiave ottenuto richiamando keySelector su ogni elemento.The expected behavior is that it groups the elements of source by a key value that is obtained by invoking keySelector on each element. Il resultSelector parametro viene usato per ottenere un valore di risultato da ogni gruppo e dalla relativa chiave.The resultSelector parameter is used to obtain a result value from each group and its key.

Si applica a

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

Raggruppa gli elementi di una sequenza in base a una funzione del selettore principale specificata e crea un valore risultante da ciascun gruppo e relativa chiave.Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key. Le chiavi vengono confrontate utilizzando un operatore di confronto specificato.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)

Parametri di tipo

TSource

Tipo degli elementi di source.The type of the elements of source.

TKey

Tipo della chiave restituita dalla funzione rappresentata nell'oggetto keySelector.The type of the key returned by the function represented in keySelector.

TResult

Tipo del valore restituito dall'oggetto resultSelector.The type of the result value returned by resultSelector.

Parametri

source
IQueryable<TSource>

Oggetto IQueryable<T> i cui elementi sono da raggruppare.An IQueryable<T> whose elements to group.

keySelector
Expression<Func<TSource,TKey>>

Funzione per estrarre la chiave per ogni elemento.A function to extract the key for each element.

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

Funzione per creare un valore di risultato da ogni gruppo.A function to create a result value from each group.

comparer
IEqualityComparer<TKey>

Oggetto IEqualityComparer<T> per confrontare le chiavi.An IEqualityComparer<T> to compare keys.

Restituisce

IQueryable<TResult>

Oggetto T:System.Linq.IQueryable`1 che ha un argomento di tipo TResult e in cui ogni elemento rappresenta una proiezione su un gruppo e sulla relativa chiave.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.

Eccezioni

source, keySelector, resultSelector o comparer è null.source or keySelector or resultSelector or comparer is null.

Commenti

Questo metodo ha almeno un parametro di tipo Expression<TDelegate> il cui argomento di tipo è uno dei Func<T,TResult> tipi.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Per questi parametri, è possibile passare un'espressione lambda che verrà compilata in un oggetto Expression<TDelegate> .For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

Il GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>) metodo genera un oggetto MethodCallExpression che rappresenta la chiamata a GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>) se stesso come metodo generico costruito.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. Passa quindi al MethodCallExpression CreateQuery<TElement>(Expression) metodo dell'oggetto IQueryProvider rappresentato dalla Provider proprietà del source parametro.It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Il comportamento della query che si verifica in seguito all'esecuzione di un albero delle espressioni che rappresenta la chiamata GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>) dipende dall'implementazione del tipo di source parametro.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. Il comportamento previsto è che raggruppa gli elementi di source in base ai valori di chiave ottenuti richiamando keySelector su ogni elemento.The expected behavior is that it groups the elements of source by key values that are obtained by invoking keySelector on each element. Il comparer parametro viene usato per confrontare le chiavi e il resultSelector parametro viene usato per ottenere un valore di risultato da ogni gruppo e dalla relativa chiave.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.

Si applica a

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

Raggruppa gli elementi di una sequenza secondo una specificata funzione del selettore principale e confronta le chiavi utilizzando un operatore di confronto specificato.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))

Parametri di tipo

TSource

Tipo degli elementi di source.The type of the elements of source.

TKey

Tipo della chiave restituita dalla funzione rappresentata nell'oggetto keySelector.The type of the key returned by the function represented in keySelector.

Parametri

source
IQueryable<TSource>

Oggetto IQueryable<T> i cui elementi sono da raggruppare.An IQueryable<T> whose elements to group.

keySelector
Expression<Func<TSource,TKey>>

Funzione per estrarre la chiave per ogni elemento.A function to extract the key for each element.

comparer
IEqualityComparer<TKey>

Oggetto IEqualityComparer<T> per confrontare le chiavi.An IEqualityComparer<T> to compare keys.

Restituisce

IQueryable<IGrouping<TKey,TSource>>

Elemento IQueryable<IGrouping<TKey, TSource>> in C# o IQueryable(Of IGrouping(Of TKey, TSource)) in Visual Basic in cui ogni oggetto IGrouping<TKey,TElement> contiene una sequenza di oggetti e una chiave.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.

Eccezioni

Il parametro source, il parametro keySelector o il parametro comparer è null.source or keySelector or comparer is null.

Commenti

Questo metodo ha almeno un parametro di tipo Expression<TDelegate> il cui argomento di tipo è uno dei Func<T,TResult> tipi.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Per questi parametri, è possibile passare un'espressione lambda che verrà compilata in un oggetto Expression<TDelegate> .For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

Il GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>) metodo genera un oggetto MethodCallExpression che rappresenta la chiamata a GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>) se stesso come metodo generico costruito.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. Passa quindi al MethodCallExpression CreateQuery<TElement>(Expression) metodo dell'oggetto IQueryProvider rappresentato dalla Provider proprietà del source parametro.It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Il comportamento della query che si verifica in seguito all'esecuzione di un albero delle espressioni che rappresenta la chiamata GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>) dipende dall'implementazione del tipo di source parametro.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. Il comportamento previsto è che raggruppa gli elementi di source in base a un valore di chiave.The expected behavior is that it groups the elements of source by a key value. Il valore della chiave viene ottenuto richiamando keySelector su ogni elemento e i valori delle chiavi vengono confrontati tramite comparer .The key value is obtained by invoking keySelector on each element, and key values are compared by using comparer.

Si applica a

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

Raggruppa gli elementi di una sequenza secondo una specificata funzione del selettore principale.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))

Parametri di tipo

TSource

Tipo degli elementi di source.The type of the elements of source.

TKey

Tipo della chiave restituita dalla funzione rappresentata nell'oggetto keySelector.The type of the key returned by the function represented in keySelector.

Parametri

source
IQueryable<TSource>

Oggetto IQueryable<T> i cui elementi sono da raggruppare.An IQueryable<T> whose elements to group.

keySelector
Expression<Func<TSource,TKey>>

Funzione per estrarre la chiave per ogni elemento.A function to extract the key for each element.

Restituisce

IQueryable<IGrouping<TKey,TSource>>

Elemento IQueryable<IGrouping<TKey, TSource>> in C# o IQueryable(Of IGrouping(Of TKey, TSource)) in Visual Basic in cui ogni oggetto IGrouping<TKey,TElement> contiene una sequenza di oggetti e una chiave.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.

Eccezioni

source o keySelector è null.source or keySelector is null.

Esempio

Nell'esempio di codice riportato di seguito viene illustrato come utilizzare GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) per raggruppare gli elementi di una sequenza.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

Commenti

Questo metodo ha almeno un parametro di tipo Expression<TDelegate> il cui argomento di tipo è uno dei Func<T,TResult> tipi.This method has at least one parameter of type Expression<TDelegate> whose type argument is one of the Func<T,TResult> types. Per questi parametri, è possibile passare un'espressione lambda che verrà compilata in un oggetto Expression<TDelegate> .For these parameters, you can pass in a lambda expression and it will be compiled to an Expression<TDelegate>.

Il GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) metodo genera un oggetto MethodCallExpression che rappresenta la chiamata a GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) se stesso come metodo generico costruito.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. Passa quindi al MethodCallExpression CreateQuery<TElement>(Expression) metodo dell'oggetto IQueryProvider rappresentato dalla Provider proprietà del source parametro.It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Il comportamento della query che si verifica in seguito all'esecuzione di un albero delle espressioni che rappresenta la chiamata GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) dipende dall'implementazione del tipo di source parametro.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. Il comportamento previsto è che raggruppa gli elementi di source in base a un valore di chiave ottenuto richiamando keySelector su ogni elemento.The expected behavior is that it groups the elements of source by a key value that is obtained by invoking keySelector on each element.

Si applica a