Condividi tramite


Ordinamento dei dati

Aggiornamento: novembre 2007

Un'operazione di ordinamento dispone gli elementi di una sequenza in base a uno o più attributi. Il primo criterio di ordinamento esegue un ordinamento primario sugli elementi. Specificando un secondo criterio di ordinamento, è possibile ordinare gli elementi all'interno di ogni gruppo di ordinamento primario.

Nella figura seguente vengono illustrati i risultati di un'operazione di ordinamento alfabetico su una sequenza di caratteri.

Operazione di ordinamento LINQ

I metodi degli operatori di query standard che ordinano i dati sono riportati nella sezione seguente.

Metodi

Nome metodo

Descrizione

Sintassi dell'espressione di query in C#

Sintassi dell'espressione di query in Visual Basic

Ulteriori informazioni

OrderBy

Ordina i valori in ordine crescente.

orderby

Order By

Enumerable.OrderBy

Queryable.OrderBy

OrderByDescending

Ordina i valori in ordine decrescente.

orderby … descending

Order By … Descending

Enumerable.OrderByDescending

Queryable.OrderByDescending

ThenBy

Esegue un ordinamento secondario in ordine crescente.

orderby …, …

Order By …, …

Enumerable.ThenBy

Queryable.ThenBy

ThenByDescending

Esegue un ordinamento secondario in ordine decrescente.

orderby …, … descending

Order By …, … Descending

Enumerable.ThenByDescending

Queryable.ThenByDescending

Inverso

Inverte l'ordine degli elementi in un insieme.

Non applicabile.

Non applicabile.

Enumerable.Reverse<TSource>

Queryable.Reverse<TSource>

Esempi di sintassi dell'espressione di query

Esempi di ordinamento primario

Ordinamento primario crescente

Nell'esempio seguente viene illustrato come utilizzare la clausola orderby (Order By in Visual Basic) in una query LINQ per ordinare le stringhe in una matrice in base alla lunghezza della stringa, in ordine crescente.

Dim words() As String = {"the", "quick", "brown", "fox", "jumps"}

Dim sortQuery = From word In words _
                Order By word.Length _
                Select word

Dim sb As New System.Text.StringBuilder()
For Each str As String In sortQuery
    sb.AppendLine(str)
Next

' Display the results.
MsgBox(sb.ToString())

' This code produces the following output:

' the
' fox
' quick
' brown
' jumps

string[] words = { "the", "quick", "brown", "fox", "jumps" };

IEnumerable<string> query = from word in words
                            orderby word.Length
                            select word;

foreach (string str in query)
    Console.WriteLine(str);

/* This code produces the following output:

    the
    fox
    quick
    brown
    jumps
*/

Ordinamento primario decrescente

Nell'esempio successivo viene illustrato come utilizzare la clausola orderbydescending (Order By Descending in Visual Basic) in una query LINQ per ordinare le stringhe in base alla prima lettera, in ordine decrescente.

Dim words() As String = {"the", "quick", "brown", "fox", "jumps"}

Dim sortQuery = From word In words _
                Order By word.Substring(0, 1) Descending _
                Select word

Dim sb As New System.Text.StringBuilder()
For Each str As String In sortQuery
    sb.AppendLine(str)
Next

' Display the results.
MsgBox(sb.ToString())

' This code produces the following output:

' the
' quick
' jumps
' fox
' brown

string[] words = { "the", "quick", "brown", "fox", "jumps" };

IEnumerable<string> query = from word in words
                            orderby word.Substring(0, 1) descending
                            select word;

foreach (string str in query)
    Console.WriteLine(str);

/* This code produces the following output:

    the
    quick
    jumps
    fox
    brown
*/

Esempi di ordinamento secondario

Ordinamento secondario crescente

Nell'esempio seguente viene illustrato come utilizzare la clausola orderby (Order By in Visual Basic) in una query LINQ per eseguire un ordinamento primario e secondario delle stringhe in una matrice. Le stringhe vengono ordinate prima in base alla lunghezza e poi in base alla prima lettera della stringa, in ordine crescente.

Dim words() As String = {"the", "quick", "brown", "fox", "jumps"}

Dim sortQuery = From word In words _
                Order By word.Length, word.Substring(0, 1) _
                Select word

Dim sb As New System.Text.StringBuilder()
For Each str As String In sortQuery
    sb.AppendLine(str)
Next

' Display the results.
MsgBox(sb.ToString())

' This code produces the following output:

' fox
' the
' brown
' jumps
' quick

string[] words = { "the", "quick", "brown", "fox", "jumps" };

IEnumerable<string> query = from word in words
                            orderby word.Length, word.Substring(0, 1)
                            select word;

foreach (string str in query)
    Console.WriteLine(str);

/* This code produces the following output:

    fox
    the
    brown
    jumps
    quick
*/

Ordinamento secondario decrescente

Nell'esempio successivo viene illustrato come utilizzare la clausola orderbydescending (Order By Descending in Visual Basic) in una query LINQ per eseguire un ordinamento primario in ordine crescente e un ordinamento secondario in ordine decrescente. Le stringhe vengono ordinate prima in base alla lunghezza e poi in base alla prima lettera della stringa.

Dim words() As String = {"the", "quick", "brown", "fox", "jumps"}

Dim sortQuery = From word In words _
                Order By word.Length, word.Substring(0, 1) Descending _
                Select word

Dim sb As New System.Text.StringBuilder()
For Each str As String In sortQuery
    sb.AppendLine(str)
Next

' Display the results.
MsgBox(sb.ToString())

' This code produces the following output:

' fox
' the
' quick
' jumps
' brown

string[] words = { "the", "quick", "brown", "fox", "jumps" };

IEnumerable<string> query = from word in words
                            orderby word.Length, word.Substring(0, 1) descending
                            select word;

foreach (string str in query)
    Console.WriteLine(str);

/* This code produces the following output:

    the
    fox
    quick
    jumps
    brown
*/

Ulteriori informazioni sull'ordinamento dei dati

Vedere anche

Concetti

Cenni preliminari sugli operatori di query standard

Riferimenti

Clausola orderby (Riferimento C#)

Clausola Order By (Visual Basic)

System.Linq