Tri des données
Mise à jour : novembre 2007
Une opération de tri permet de classer les éléments d'une séquence en fonction d'un ou de plusieurs attributs. Le premier critère de tri effectue un tri principal sur les éléments. En spécifiant un deuxième critère de tri, vous pouvez trier les éléments dans chaque groupe de tri principal.
L'illustration suivante présente les résultats d'une opération de tri alphabétique sur une séquence de caractères.
Les méthodes d'opérateur de requête standard qui effectuent le tri des données sont répertoriées dans la section suivante.
Méthodes
Nom de la méthode |
Description |
Syntaxe d'expression de requête C# |
Syntaxe d'expression de requête Visual Basic |
Informations supplémentaires |
---|---|---|---|---|
OrderBy |
Trie les valeurs dans l'ordre croissant. |
orderby |
Order By |
|
OrderByDescending |
Trie les valeurs dans l'ordre décroissant. |
orderby … descending |
Order By … Descending |
|
ThenBy |
Effectue un tri secondaire dans l'ordre croissant. |
orderby …, … |
Order By …, … |
|
ThenByDescending |
Effectue un tri secondaire dans l'ordre décroissant. |
orderby …, … descending |
Order By …, … Descending |
|
Reverse |
Inverse l'ordre des éléments dans une collection. |
Non applicable. |
Non applicable. |
Exemples de syntaxe d'expression de requête
Exemples de tri principal
Tri principal croissant
L'exemple suivant montre comment utiliser la clause orderby (Order By dans Visual Basic) dans une requête LINQ pour trier les chaînes d'un tableau par longueur de chaîne dans l'ordre croissant.
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
*/
Tri principal décroissant
L'exemple suivant montre comment utiliser la clause descending (Order By Descending dans Visual Basic) orderby dans une requête LINQ pour trier les chaînes en fonction de leur première lettre dans l'ordre décroissant.
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
*/
Exemples de tri secondaire
Tri secondaire croissant
L'exemple suivant montre comment utiliser la clause orderby (Order By dans Visual Basic) dans une requête LINQ pour effectuer un tri principal et un tri secondaire des chaînes d'un tableau. Les chaînes sont d'abord triées par longueur puis en fonction de leur première lettre, dans l'ordre croissant à chaque fois.
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
*/
Tri secondaire décroissant
L'exemple suivant montre comment utiliser la clause descending (Order By Descending dans Visual Basic) orderby dans une requête LINQ pour effectuer un tri principal dans l'ordre croissant et un tri secondaire dans l'ordre décroissant. Les chaînes sont d'abord triées par longueur, puis en fonction de leur première lettre.
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
*/
En savoir plus sur le tri des données
Voir aussi
Concepts
Vue d'ensemble des opérateurs de requête standard
Référence
orderby, clause (Référence C#)