Partager via


Tri des données

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.

Opération de tri LINQ

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

Enumerable.OrderBy``2

Queryable.OrderBy``2

OrderByDescending

Trie les valeurs dans l'ordre décroissant.

orderby … descending

Order By … Descending

Enumerable.OrderByDescending``2

Queryable.OrderByDescending``2

ThenBy

Effectue un tri secondaire dans l'ordre croissant.

orderby …, …

Order By …, …

Enumerable.ThenBy``2

Queryable.ThenBy``2

ThenByDescending

Effectue un tri secondaire dans l'ordre décroissant.

orderby …, … descending

Order By …, … Descending

Enumerable.ThenByDescending``2

Queryable.ThenByDescending``2

Reverse

Inverse l'ordre des éléments dans une collection.

Non applicable.

Non applicable.

Enumerable.Reverse``1

Queryable.Reverse``1

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 = {"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 = {"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 = {"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 = {"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
            */

Voir aussi

Tâches

Comment : classer les résultats d'une clause Join (Guide de programmation C#)

Comment : trier les résultats d'une requête à l'aide de LINQ (Visual Basic)

Comment : trier ou filtrer des données texte par mot ou par champ (LINQ)

Référence

orderby, clause (Référence C#)

Order By, clause (Visual Basic)

System.Linq

Concepts

Vue d'ensemble des opérateurs de requête standard