Compartilhar via


Classificando dados

Os elementos de uma seqüência com base nos atributos de um ou mais ordens de uma operação de classificação. O primeiro critério de classificação executa uma classificação primária nos elementos. Especificando um segundo critério de classificação, você pode classificar os elementos dentro de cada grupo de classificação primária.

A ilustração a seguir mostra os resultados de uma operação de classificação alfabética em uma seqüência de caracteres.

Operação de classificação LINQ

Os métodos de operador de consulta padrão que classificar os dados são listados na seção a seguir.

Métodos

Nome do método

Descrição

C# Expressão de consulta sintaxe

Visual BasicSintaxe de expressões de consulta

Mais informações

OrderBy

Classifica valores em ordem crescente.

orderby

Order By

Enumerable.OrderBy``2

Queryable.OrderBy``2

OrderByDescending

Classifica valores em ordem decrescente.

orderby … descending

Order By … Descending

Enumerable.OrderByDescending``2

Queryable.OrderByDescending``2

ThenBy

Executa uma classificação secundária em ordem crescente.

orderby …, …

Order By …, …

Enumerable.ThenBy``2

Queryable.ThenBy``2

ThenByDescending

Executa uma classificação secundária em ordem decrescente.

orderby …, … descending

Order By …, … Descending

Enumerable.ThenByDescending``2

Queryable.ThenByDescending``2

Reverter

Inverte a ordem dos elementos em uma coleção.

Não aplicável.

Não aplicável.

Enumerable.Reverse``1

Queryable.Reverse``1

Exemplos de sintaxe de expressões de consulta

Exemplos de classificação primária

Classificação crescente primária

O exemplo a seguir demonstra como usar o orderby (Order By em Visual Basic) cláusula em uma consulta LINQ para classificar as seqüências de caracteres em uma matriz por comprimento da seqüência de caracteres, em ordem 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
            */

Classificação decrescente primária

O exemplo a seguir demonstra como usar o orderbydescending (Order By Descending em Visual Basic) cláusula em uma consulta LINQ para classificar as seqüências de caracteres pela sua primeira letra em ordem 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
            */

Exemplos de classificação secundária

Classificação crescente secundária

O exemplo a seguir demonstra como usar o orderby (Order By em Visual Basic) cláusula em uma consulta LINQ para executar uma classificação primária e secundária das seqüências de caracteres em uma matriz. As seqüências de caracteres são classificadas principalmente por comprimento e depois pela primeira letra da cadeia, ambos em ordem 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
            */

Classificação decrescente secundária

O exemplo a seguir demonstra como usar o orderbydescending (Order By Descending em Visual Basic) cláusula em uma consulta LINQ para realizar uma classificação principal, em ordem crescente e uma classificação secundária, em ordem decrescente. As seqüências de caracteres são classificadas principalmente por comprimento e depois pela primeira letra da seqüência de caracteres.

        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
            */

Consulte também

Tarefas

Como ordenar os resultados de uma cláusula join (Guia de Programação em C#)

Como classificar resultados de consulta usando LINQ (Visual Basic)

Como classificar ou filtrar dados de texto por qualquer palavra ou campo (LINQ)

Referência

Cláusula orderby (Referência de C#)

Cláusula Order By (Visual Basic)

System.Linq

Conceitos

Visão geral de operadores de consulta padrão