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 Enumerable.OrderBy<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>)

 

Data di pubblicazione: ottobre 2016

Ordina gli elementi di una sequenza in ordine crescente in base a una chiave.

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

public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(
	this IEnumerable<TSource> source,
	Func<TSource, TKey> keySelector
)

Parametri

source
Type: System.Collections.Generic.IEnumerable<TSource>

Sequenza di valori da ordinare.

keySelector
Type: System.Func<TSource, TKey>

Funzione per estrarre una chiave da un elemento.

Valore restituito

Type: System.Linq.IOrderedEnumerable<TSource>

Un IOrderedEnumerable<TElement> i cui elementi sono ordinati in base a una chiave.

Parametri tipo

TSource

Tipo degli elementi di source.

TKey

Tipo della chiave restituita dall'oggetto keySelector.

Exception Condition
ArgumentNullException

source o keySelector è null.

Questo metodo viene implementato tramite 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 finché l'oggetto viene enumerata chiamando il relativo GetEnumerator metodo direttamente o tramite foreach in Visual C# o For Each in Visual Basic.

Per ordinare una sequenza in base ai valori degli elementi stessi, specificare la funzione identity (x => x in Visual C# o Function(x) x in Visual Basic) per keySelector.

Vengono definiti due metodi per estendere il tipo IOrderedEnumerable<TElement>, ovvero il tipo restituito di questo metodo. Questi due metodi, vale a dire ThenBy e ThenByDescending, consentono di specificare i criteri di ordinamento aggiuntivi per ordinare una sequenza. ThenBy e ThenByDescending restituiscono inoltre un IOrderedEnumerable<TElement>, ovvero un numero qualsiasi di chiamate consecutive per ThenBy o ThenByDescending possibili.

System_CAPS_noteNota

Poiché IOrderedEnumerable<TElement> eredita da IEnumerable<T>, è possibile chiamare OrderBy o OrderByDescending ai risultati di una chiamata a OrderBy, OrderByDescending, ThenBy o ThenByDescending. Tale operazione introduce un nuovo ordinamento primario che ignora l'ordinamento definito in precedenza.

Questo metodo vengono confrontati utilizzando l'operatore di confronto Default.

Questo metodo esegue un ordinamento stabile; ovvero, se le chiavi di due elementi sono uguali, l'ordine degli elementi viene mantenuto. Ordinamento instabile, invece, non mantiene l'ordine degli elementi che hanno la stessa chiave.

Nella sintassi delle espressioni di query, un orderby (Visual C#) o Order By (Visual Basic) clausola viene convertita in una chiamata di OrderBy.

Esempio di codice seguente viene illustrato come utilizzare OrderBy<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>) per ordinare gli elementi di una sequenza.

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

public static void OrderByEx1()
{
    Pet[] pets = { new Pet { Name="Barley", Age=8 },
                   new Pet { Name="Boots", Age=4 },
                   new Pet { Name="Whiskers", Age=1 } };

    IEnumerable<Pet> query = pets.OrderBy(pet => pet.Age);

    foreach (Pet pet in query)
    {
        Console.WriteLine("{0} - {1}", pet.Name, pet.Age);
    }
}

/*
 This code produces the following output:

 Whiskers - 1
 Boots - 4
 Barley - 8
*/

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.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: