Enumerable.GroupBy Metodo

Definizione

Raggruppa gli elementi di una sequenza.

Overload

GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, 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. Gli elementi di ogni gruppo vengono proiettati usando una funzione specificata.

GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource,TElement>, 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. I valori delle chiavi vengono confrontati usando un operatore di confronto specificato e gli elementi di ogni gruppo vengono proiettati usando una funzione specificata.

GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, 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.

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

Raggruppa gli elementi di una sequenza secondo una specificata funzione del selettore principale. Le chiavi vengono confrontate usando un operatore di confronto e gli elementi di ogni gruppo vengono proiettati usando una funzione specificata.

GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, 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.

GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, 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. Le chiavi vengono confrontati usando un operatore di confronto specificato.

GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Raggruppa gli elementi di una sequenza secondo una specificata funzione del selettore principale.

GroupBy<TSource,TKey>(IEnumerable<TSource>, 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.

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

Origine:
Grouping.cs
Origine:
Grouping.cs
Origine:
Grouping.cs

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. Gli elementi di ogni gruppo vengono proiettati usando una funzione specificata.

C#
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TElement,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult> resultSelector);

Parametri di tipo

TSource

Tipo degli elementi di source.

TKey

Tipo della chiave restituita dall'oggetto keySelector.

TElement

Tipo degli elementi contenuti in ciascun oggetto IGrouping<TKey,TElement>.

TResult

Tipo del valore restituito dall'oggetto resultSelector.

Parametri

source
IEnumerable<TSource>

Oggetto IEnumerable<T> i cui elementi sono da raggruppare.

keySelector
Func<TSource,TKey>

Funzione per estrarre la chiave per ogni elemento.

elementSelector
Func<TSource,TElement>

Funzione per eseguire il mapping di ogni elemento di origine a un elemento in un oggetto IGrouping<TKey,TElement>.

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

Funzione per creare un valore di risultato da ogni gruppo.

Restituisce

IEnumerable<TResult>

Raccolta di elementi di tipo TResult dove ogni elemento rappresenta una proiezione su un gruppo e sulla relativa chiave.

Eccezioni

source, keySelector, elementSelector o resultSelector è null.

Esempio

Nell'esempio di codice seguente viene illustrato come usare GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>) per raggruppare gli elementi proiettati di una sequenza e quindi proiettare una sequenza di risultati di tipo TResult.

C#
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.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
    */
}

Commenti

Nella sintassi delle espressioni di query una group by clausola (C#) o Group By Into (Visual Basic) viene convertita in una chiamata di GroupBy.

Vedi anche

Si applica a

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Origine:
Grouping.cs
Origine:
Grouping.cs
Origine:
Grouping.cs

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. I valori delle chiavi vengono confrontati usando un operatore di confronto specificato e gli elementi di ogni gruppo vengono proiettati usando una funzione specificata.

C#
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TElement,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult> resultSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
C#
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TElement,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult> resultSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);

Parametri di tipo

TSource

Tipo degli elementi di source.

TKey

Tipo della chiave restituita dall'oggetto keySelector.

TElement

Tipo degli elementi contenuti in ciascun oggetto IGrouping<TKey,TElement>.

TResult

Tipo del valore restituito dall'oggetto resultSelector.

Parametri

source
IEnumerable<TSource>

Oggetto IEnumerable<T> i cui elementi sono da raggruppare.

keySelector
Func<TSource,TKey>

Funzione per estrarre la chiave per ogni elemento.

elementSelector
Func<TSource,TElement>

Funzione per eseguire il mapping di ogni elemento di origine a un elemento in un oggetto IGrouping<TKey,TElement>.

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

Funzione per creare un valore di risultato da ogni gruppo.

comparer
IEqualityComparer<TKey>

Oggetto IEqualityComparer<T> con cui confrontare le chiavi.

Restituisce

IEnumerable<TResult>

Raccolta di elementi di tipo TResult dove ogni elemento rappresenta una proiezione su un gruppo e sulla relativa chiave.

Eccezioni

source, keySelector, elementSelector o resultSelector è null.

Vedi anche

Si applica a

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)

Origine:
Grouping.cs
Origine:
Grouping.cs
Origine:
Grouping.cs

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.

C#
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector);

Parametri di tipo

TSource

Tipo degli elementi di source.

TKey

Tipo della chiave restituita dall'oggetto keySelector.

TElement

Tipo degli elementi contenuti nell'oggetto IGrouping<TKey,TElement>.

Parametri

source
IEnumerable<TSource>

Oggetto IEnumerable<T> i cui elementi sono da raggruppare.

keySelector
Func<TSource,TKey>

Funzione per estrarre la chiave per ogni elemento.

elementSelector
Func<TSource,TElement>

Funzione per eseguire il mapping di ogni elemento di origine a un elemento nell’oggetto IGrouping<TKey,TElement>.

Restituisce

IEnumerable<IGrouping<TKey,TElement>>

Oggetto IEnumerable<IGrouping<TKey, TElement>> in C# o IEnumerable(Of IGrouping(Of TKey, TElement)) in Visual Basic in cui ogni IGrouping<TKey,TElement> oggetto contiene una raccolta di oggetti di tipo TElement e una chiave.

Eccezioni

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

Esempio

Nell'esempio di codice seguente viene illustrato come usare GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) per raggruppare gli elementi di una sequenza.

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

// Uses method-based query syntax.
public static void GroupByEx1()
{
    // Create a list of pets.
    List<Pet> pets =
        new List<Pet>{ new Pet { Name="Barley", Age=8 },
                       new Pet { Name="Boots", Age=4 },
                       new Pet { Name="Whiskers", Age=1 },
                       new Pet { Name="Daisy", Age=4 } };

    // Group the pets using Age as the key value
    // and selecting only the pet's Name for each value.
    IEnumerable<IGrouping<int, string>> query =
        pets.GroupBy(pet => pet.Age, pet => pet.Name);

    // Iterate over each IGrouping in the collection.
    foreach (IGrouping<int, string> petGroup in query)
    {
        // Print the key value of the IGrouping.
        Console.WriteLine(petGroup.Key);
        // Iterate over each value in the
        // IGrouping and print the value.
        foreach (string name in petGroup)
            Console.WriteLine("  {0}", name);
    }
}

/*
 This code produces the following output:

 8
   Barley
 4
   Boots
   Daisy
 1
   Whiskers
*/

Nella sintassi delle espressioni di query una group by clausola (C#) o Group By Into (Visual Basic) viene convertita in una chiamata di GroupBy. La traduzione dell'espressione di query nell'esempio seguente equivale alla query nell'esempio precedente.

C#
IEnumerable<IGrouping<int, string>> query =
    from pet in pets
    group pet.Name by pet.Age;

Nota

In un'espressione di query C# o Visual Basic, le espressioni di selezione dell'elemento e della chiave si verificano nell'ordine inverso dalle posizioni degli argomenti in una chiamata al GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) metodo .

Commenti

Questo metodo viene implementato usando l'esecuzione posticipata. Il valore restituito immediato è un oggetto che archivia tutte le informazioni necessarie per eseguire l'azione. La query rappresentata da questo metodo non viene eseguita fino a quando l'oggetto non viene enumerato chiamando direttamente il relativo GetEnumerator metodo o usando foreach in C# o For Each in Visual Basic.

Il GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) metodo restituisce una raccolta di IGrouping<TKey,TElement> oggetti, uno per ogni chiave distinta rilevata. è IGrouping<TKey,TElement> un oggetto IEnumerable<T> che ha anche una chiave associata ai relativi elementi.

Gli IGrouping<TKey,TElement> oggetti vengono restituiti in un ordine in base all'ordine degli elementi in source che ha prodotto la prima chiave di ogni IGrouping<TKey,TElement>oggetto . Gli elementi in un raggruppamento vengono restituiti nell'ordine in cui gli elementi che li hanno prodotti vengono visualizzati in source.

L'operatore Default di confronto di uguaglianza predefinito viene usato per confrontare le chiavi.

Vedi anche

Si applica a

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Origine:
Grouping.cs
Origine:
Grouping.cs
Origine:
Grouping.cs

Raggruppa gli elementi di una sequenza secondo una specificata funzione del selettore principale. Le chiavi vengono confrontate usando un operatore di confronto e gli elementi di ogni gruppo vengono proiettati usando una funzione specificata.

C#
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
C#
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);

Parametri di tipo

TSource

Tipo degli elementi di source.

TKey

Tipo della chiave restituita dall'oggetto keySelector.

TElement

Tipo degli elementi contenuti nell'oggetto IGrouping<TKey,TElement>.

Parametri

source
IEnumerable<TSource>

Oggetto IEnumerable<T> i cui elementi sono da raggruppare.

keySelector
Func<TSource,TKey>

Funzione per estrarre la chiave per ogni elemento.

elementSelector
Func<TSource,TElement>

Funzione per eseguire il mapping di ogni elemento di origine a un elemento in un oggetto IGrouping<TKey,TElement>.

comparer
IEqualityComparer<TKey>

Oggetto IEqualityComparer<T> per confrontare le chiavi.

Restituisce

IEnumerable<IGrouping<TKey,TElement>>

Oggetto IEnumerable<IGrouping<TKey, TElement>> in C# o IEnumerable(Of IGrouping(Of TKey, TElement)) in Visual Basic in cui ogni IGrouping<TKey,TElement> oggetto contiene una raccolta di oggetti di tipo TElement e una chiave.

Eccezioni

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

Commenti

Questo metodo viene implementato usando l'esecuzione posticipata. Il valore restituito immediato è un oggetto che archivia tutte le informazioni necessarie per eseguire l'azione. La query rappresentata da questo metodo non viene eseguita fino a quando l'oggetto non viene enumerato chiamando direttamente il relativo GetEnumerator metodo o usando foreach in C# o For Each in Visual Basic.

Il GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>) metodo restituisce una raccolta di IGrouping<TKey,TElement> oggetti, uno per ogni chiave distinta rilevata. è IGrouping<TKey,TElement> un oggetto IEnumerable<T> che ha anche una chiave associata ai relativi elementi.

Gli IGrouping<TKey,TElement> oggetti vengono restituiti in un ordine in base all'ordine degli elementi in source che ha prodotto la prima chiave di ogni IGrouping<TKey,TElement>oggetto . Gli elementi in un raggruppamento vengono restituiti nell'ordine in cui gli elementi che li hanno prodotti vengono visualizzati in source.

Se comparer è null, l'operatore Default di confronto di uguaglianza predefinito viene usato per confrontare le chiavi.

Se due chiavi sono considerate uguali in base a comparer, la prima chiave viene scelta come chiave per tale raggruppamento.

Nella sintassi delle espressioni di query una group by clausola (C#) o Group By Into (Visual Basic) viene convertita in una chiamata di GroupBy. Per altre informazioni ed esempi di utilizzo, vedere clausola group e Clausola Group By.

Vedi anche

Si applica a

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Origine:
Grouping.cs
Origine:
Grouping.cs
Origine:
Grouping.cs

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.

C#
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult> resultSelector);

Parametri di tipo

TSource

Tipo degli elementi di source.

TKey

Tipo della chiave restituita dall'oggetto keySelector.

TResult

Tipo del valore restituito dall'oggetto resultSelector.

Parametri

source
IEnumerable<TSource>

Oggetto IEnumerable<T> i cui elementi sono da raggruppare.

keySelector
Func<TSource,TKey>

Funzione per estrarre la chiave per ogni elemento.

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

Funzione per creare un valore di risultato da ogni gruppo.

Restituisce

IEnumerable<TResult>

Raccolta di elementi di tipo TResult dove ogni elemento rappresenta una proiezione su un gruppo e sulla relativa chiave.

Eccezioni

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

Esempio

Nell'esempio di codice seguente viene illustrato come usare GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>) per raggruppare gli elementi di una sequenza e proiettare una sequenza di risultati di tipo TResult.

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

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

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

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

    /*  This code produces the following output:

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

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

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

Commenti

Nella sintassi delle espressioni di query una group by clausola (C#) o Group By Into (Visual Basic) viene convertita in una chiamata di GroupBy.

Vedi anche

Si applica a

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Origine:
Grouping.cs
Origine:
Grouping.cs
Origine:
Grouping.cs

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. Le chiavi vengono confrontati usando un operatore di confronto specificato.

C#
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult> resultSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
C#
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult> resultSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);

Parametri di tipo

TSource

Tipo degli elementi di source.

TKey

Tipo della chiave restituita dall'oggetto keySelector.

TResult

Tipo del valore restituito dall'oggetto resultSelector.

Parametri

source
IEnumerable<TSource>

Oggetto IEnumerable<T> i cui elementi sono da raggruppare.

keySelector
Func<TSource,TKey>

Funzione per estrarre la chiave per ogni elemento.

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

Funzione per creare un valore di risultato da ogni gruppo.

comparer
IEqualityComparer<TKey>

Oggetto IEqualityComparer<T> con cui confrontare le chiavi.

Restituisce

IEnumerable<TResult>

Raccolta di elementi di tipo TResult dove ogni elemento rappresenta una proiezione su un gruppo e sulla relativa chiave.

Eccezioni

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

Vedi anche

Si applica a

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Origine:
Grouping.cs
Origine:
Grouping.cs
Origine:
Grouping.cs

Raggruppa gli elementi di una sequenza secondo una specificata funzione del selettore principale.

C#
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector);

Parametri di tipo

TSource

Tipo degli elementi di source.

TKey

Tipo della chiave restituita dall'oggetto keySelector.

Parametri

source
IEnumerable<TSource>

Oggetto IEnumerable<T> i cui elementi sono da raggruppare.

keySelector
Func<TSource,TKey>

Funzione per estrarre la chiave per ogni elemento.

Restituisce

IEnumerable<IGrouping<TKey,TSource>>

Oggetto IEnumerable<IGrouping<TKey, TSource>> in C# o IEnumerable(Of IGrouping(Of TKey, TSource)) in Visual Basic in cui ogni IGrouping<TKey,TElement> oggetto contiene una sequenza di oggetti e una chiave.

Eccezioni

source o keySelector è null.

Commenti

Questo metodo viene implementato usando l'esecuzione posticipata. Il valore restituito immediato è un oggetto che archivia tutte le informazioni necessarie per eseguire l'azione. La query rappresentata da questo metodo non viene eseguita fino a quando l'oggetto non viene enumerato chiamando direttamente il relativo GetEnumerator metodo o usando foreach in C# o For Each in Visual Basic.

Il GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) metodo restituisce una raccolta di IGrouping<TKey,TElement> oggetti, uno per ogni chiave distinta rilevata. è IGrouping<TKey,TElement> un oggetto IEnumerable<T> che ha anche una chiave associata ai relativi elementi.

Gli IGrouping<TKey,TElement> oggetti vengono restituiti in un ordine in base all'ordine degli elementi in source che ha prodotto la prima chiave di ogni IGrouping<TKey,TElement>oggetto . Gli elementi in un raggruppamento vengono restituiti nell'ordine in cui vengono visualizzati in source.

L'operatore Default di confronto di uguaglianza predefinito viene usato per confrontare le chiavi.

Nella sintassi delle espressioni di query una group by clausola (C#) o Group By Into (Visual Basic) viene convertita in una chiamata di GroupBy. Per altre informazioni ed esempi di utilizzo, vedere clausola group e Clausola Group By.

Vedi anche

Si applica a

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Origine:
Grouping.cs
Origine:
Grouping.cs
Origine:
Grouping.cs

Raggruppa gli elementi di una sequenza secondo una specificata funzione del selettore principale e confronta le chiavi utilizzando un operatore di confronto specificato.

C#
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
C#
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);

Parametri di tipo

TSource

Tipo degli elementi di source.

TKey

Tipo della chiave restituita dall'oggetto keySelector.

Parametri

source
IEnumerable<TSource>

Oggetto IEnumerable<T> i cui elementi sono da raggruppare.

keySelector
Func<TSource,TKey>

Funzione per estrarre la chiave per ogni elemento.

comparer
IEqualityComparer<TKey>

Oggetto IEqualityComparer<T> per confrontare le chiavi.

Restituisce

IEnumerable<IGrouping<TKey,TSource>>

Oggetto IEnumerable<IGrouping<TKey, TSource>> in C# o IEnumerable(Of IGrouping(Of TKey, TSource)) in Visual Basic in cui ogni IGrouping<TKey,TElement> oggetto contiene una raccolta di oggetti e una chiave.

Eccezioni

source o keySelector è null.

Commenti

Questo metodo viene implementato usando l'esecuzione posticipata. Il valore restituito immediato è un oggetto che archivia tutte le informazioni necessarie per eseguire l'azione. La query rappresentata da questo metodo non viene eseguita fino a quando l'oggetto non viene enumerato chiamando direttamente il relativo GetEnumerator metodo o usando foreach in C# o For Each in Visual Basic.

Il GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>) metodo restituisce una raccolta di IGrouping<TKey,TElement> oggetti, uno per ogni chiave distinta rilevata. è IGrouping<TKey,TElement> un oggetto IEnumerable<T> che ha anche una chiave associata ai relativi elementi.

Gli IGrouping<TKey,TElement> oggetti vengono restituiti in un ordine in base all'ordine degli elementi in source che ha prodotto la prima chiave di ogni IGrouping<TKey,TElement>oggetto . Gli elementi in un raggruppamento vengono restituiti nell'ordine in cui vengono visualizzati in source.

Se comparer è null, l'operatore Default di confronto di uguaglianza predefinito viene usato per confrontare le chiavi.

Se due chiavi sono considerate uguali in base a comparer, la prima chiave viene scelta come chiave per tale raggruppamento.

Nella sintassi delle espressioni di query una group by clausola (C#) o Group By Into (Visual Basic) viene convertita in una chiamata di GroupBy. Per altre informazioni ed esempi di utilizzo, vedere clausola group e Clausola Group By.

Vedi anche

Si applica a

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0