Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

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

 

Data di pubblicazione: novembre 2016

Raggruppa gli elementi di una sequenza in base a una funzione specificata del selettore di chiave e proietta gli elementi di ogni gruppo utilizzando una funzione specificata.

Spazio dei nomi:   System.Linq
Assembly:  System.Core (in System.Core.dll)

public static IQueryable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(
	this IQueryable<TSource> source,
	Expression<Func<TSource, TKey>> keySelector,
	Expression<Func<TSource, TElement>> elementSelector
)

Parametri

source
Type: System.Linq.IQueryable<TSource>

Un IQueryable<T> cui raggruppare gli elementi.

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

Funzione per estrarre la chiave per ogni elemento.

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

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

Valore restituito

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

Un IQueryable<IGrouping<TKey, TElement>> in c# o IQueryable(Of IGrouping(Of TKey, TElement)) in Visual Basic in cui ogni IGrouping<TKey, TElement> contiene una sequenza di oggetti di tipo TElement e una chiave.

Parametri tipo

TSource

Tipo degli elementi di source.

TKey

Il tipo della chiave restituita dalla funzione rappresentata keySelector.

TElement

Il tipo degli elementi in ogni IGrouping<TKey, TElement>.

Exception Condition
ArgumentNullException

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

Questo metodo contiene almeno un parametro di tipo Expression<TDelegate> il cui argomento di tipo è uno del Func<T, TResult> tipi. Per questi parametri, è possibile passare un'espressione lambda e verrà compilato in un Expression<TDelegate>.

Il GroupBy<TSource, TKey, TElement>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource, TElement>>) metodo genera un MethodCallExpression che rappresenta una chiamata GroupBy<TSource, TKey, TElement>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource, TElement>>) stesso come un metodo generico costruito. Passa quindi il MethodCallExpression per il CreateQuery<TElement>(Expression) metodo il IQueryProvider rappresentato dal Provider proprietà del source parametro.

Il comportamento della query che si verifica in seguito all'esecuzione di una struttura ad albero dell'espressione che rappresenta una chiamata GroupBy<TSource, TKey, TElement>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource, TElement>>) dipende dall'implementazione del tipo di source parametro. Il comportamento previsto è che raggruppa gli elementi di source dal valore di chiave ottenuto richiamando keySelector su ogni elemento. Richiama elementSelector su ogni elemento per ottenere un elemento di risultato.

Esempio di codice seguente 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.

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

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 3.5
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.1
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: