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.
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 |
|
OrderByDescending |
Ordina i valori in ordine decrescente. |
orderby … descending |
Order By … Descending |
|
ThenBy |
Esegue un ordinamento secondario in ordine crescente. |
orderby …, … |
Order By …, … |
|
ThenByDescending |
Esegue un ordinamento secondario in ordine decrescente. |
orderby …, … descending |
Order By …, … Descending |
|
Inverso |
Inverte l'ordine degli elementi in un insieme. |
Non applicabile. |
Non applicabile. |
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#)