Enumerable.OrderBy Metodo

Definizione

Ordina in senso crescente gli elementi di una sequenza.

Overload

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

Ordina in senso crescente gli elementi di una sequenza secondo una chiave.

OrderBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)

Ordina in ordine crescente gli elementi di una sequenza utilizzando un operatore di confronto specificato.

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

Origine:
OrderBy.cs
Origine:
OrderBy.cs
Origine:
OrderBy.cs

Ordina in senso crescente gli elementi di una sequenza secondo una chiave.

C#
public static System.Linq.IOrderedEnumerable<TSource> OrderBy<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>

Sequenza di valori da ordinare.

keySelector
Func<TSource,TKey>

Funzione per estrarre una chiave da un elemento.

Restituisce

Oggetto IOrderedEnumerable<TElement> i cui elementi vengono ordinati secondo una chiave.

Eccezioni

source o keySelector è null.

Esempio

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

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

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 finché l'oggetto non viene enumerato chiamando il GetEnumerator relativo metodo direttamente o usando foreach in 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 C# o Function(x) x in Visual Basic) per keySelector.

Due metodi sono definiti per estendere il tipo IOrderedEnumerable<TElement>, ovvero il tipo restituito di questo metodo. Questi due metodi, ovvero ThenBy e ThenByDescending, consentono di specificare criteri di ordinamento aggiuntivi per ordinare una sequenza. ThenBy e ThenByDescending restituisce anche un IOrderedEnumerable<TElement>oggetto , che significa qualsiasi numero di chiamate consecutive a ThenBy o ThenByDescending può essere effettuato.

Nota

Poiché IOrderedEnumerable<TElement> eredita da IEnumerable<T>, è possibile chiamare OrderBy o OrderByDescending sui risultati di una chiamata a OrderBy, OrderByDescendingThenBy o ThenByDescending. In questo modo viene introdotto un nuovo ordinamento primario che ignora l'ordinamento stabilito in precedenza.

Questo metodo confronta le chiavi usando il comparer Defaultpredefinito .

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

Nella sintassi dell'espressione di query, una orderby clausola (C#) o Order By (Visual Basic) si traduce in una chiamata di OrderBy.

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

OrderBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)

Origine:
OrderBy.cs
Origine:
OrderBy.cs
Origine:
OrderBy.cs

Ordina in ordine crescente gli elementi di una sequenza utilizzando un operatore di confronto specificato.

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

Parametri di tipo

TSource

Tipo degli elementi di source.

TKey

Tipo della chiave restituita dall'oggetto keySelector.

Parametri

source
IEnumerable<TSource>

Sequenza di valori da ordinare.

keySelector
Func<TSource,TKey>

Funzione per estrarre una chiave da un elemento.

comparer
IComparer<TKey>

Oggetto IComparer<T> per confrontare le chiavi.

Restituisce

Oggetto IOrderedEnumerable<TElement> i cui elementi vengono ordinati secondo 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 finché l'oggetto non viene enumerato chiamando il GetEnumerator relativo metodo direttamente o usando foreach in 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 C# o Function(x) x in Visual Basic) per keySelector.

Due metodi sono definiti per estendere il tipo IOrderedEnumerable<TElement>, ovvero il tipo restituito di questo metodo. Questi due metodi, ovvero ThenBy e ThenByDescending, consentono di specificare criteri di ordinamento aggiuntivi per ordinare una sequenza. ThenBy e ThenByDescending restituisce anche un IOrderedEnumerable<TElement>oggetto , che significa qualsiasi numero di chiamate consecutive a ThenBy o ThenByDescending può essere effettuato.

Nota

Poiché IOrderedEnumerable<TElement> eredita da IEnumerable<T>, è possibile chiamare OrderBy o OrderByDescending sui risultati di una chiamata a OrderBy, OrderByDescendingThenBy o ThenByDescending. In questo modo viene introdotto un nuovo ordinamento primario che ignora l'ordinamento stabilito in precedenza.

Se comparer è null, il comparer Default predefinito viene usato per confrontare le chiavi.

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

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