Ordinamento dei dati
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 = {"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 orderby descending (Order By Descending in Visual Basic) in una query LINQ per ordinare le stringhe in base alla prima lettera, in ordine decrescente.
Dim words = {"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 = {"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 orderby descending (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 = {"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
*/
Vedere anche
Attività
Procedura: ordinare i risultati di una clausola join (Guida per programmatori C#)
Procedura: ordinare i risultati di query utilizzando LINQ (Visual Basic)
Procedura: ordinare o filtrare i dati di testo in base a qualsiasi parola o campo (LINQ)
Riferimenti
Clausola orderby (Riferimento C#)
Clausola Order By (Visual Basic)