Ordenar datos

Una operación de ordenación ordena los elementos de una secuencia según uno o varios atributos.El primer criterio de ordenación realiza una ordenación principal de los elementos.Al especificar un segundo criterio de ordenación, se pueden ordenar los elementos dentro de cada grupo de ordenación principal.

La ilustración siguiente muestra los resultados de una operación de ordenación alfabética en una secuencia de caracteres.

Operación de ordenación en LINQ

Los métodos de operador de consulta estándar que ordenan los datos se enumeran en la sección siguiente.

Métodos

Nombre del método

Descripción

Sintaxis de las expresiones de consulta de C#

Sintaxis de las expresiones de consulta de Visual Basic

Más información

OrderBy

Ordena los valores de forma ascendente.

orderby

Order By

Enumerable.OrderBy

Queryable.OrderBy

OrderByDescending

Ordena los valores de forma descendente.

orderby … descending

Order By … Descending

Enumerable.OrderByDescending

Queryable.OrderByDescending

ThenBy

Realiza una operación de ordenación secundaria de forma ascendente.

orderby …, …

Order By …, …

Enumerable.ThenBy

Queryable.ThenBy

ThenByDescending

Realiza una operación de ordenación secundaria de forma descendente.

orderby …, … descending

Order By …, … Descending

Enumerable.ThenByDescending

Queryable.ThenByDescending

Reverse

Invierte el orden de los elementos de una colección.

No es aplicable

No es aplicable

Enumerable.Reverse<TSource>

Queryable.Reverse<TSource>

Ejemplos de sintaxis de expresiones de consulta

Bb546145.collapse_all(es-es,VS.110).gifEjemplos de ordenación principal

Bb546145.collapse_all(es-es,VS.110).gifOrdenación principal ascendente

En el ejemplo siguiente se muestra cómo utilizar la cláusula orderby (Order By en Visual Basic) en una consulta LINQ para ordenar las cadenas de una matriz por longitud de cadena, en orden ascendente.


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

Bb546145.collapse_all(es-es,VS.110).gifOrdenación principal descendente

En el ejemplo siguiente se muestra cómo utilizar la cláusula orderbydescending (Order By Descending en Visual Basic) en una consulta LINQ para ordenar las cadenas por su primera letra, en orden descendente.


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

Bb546145.collapse_all(es-es,VS.110).gifEjemplos de ordenación secundaria

Bb546145.collapse_all(es-es,VS.110).gifOrdenación secundaria ascendente

En el ejemplo siguiente se muestra cómo utilizar la cláusula orderby (Order By en Visual Basic) en una consulta LINQ para realizar una ordenación principal y secundaria de las cadenas de una matriz.Las cadenas se ordenan primero por longitud y después por la primera letra de la cadena, en ambos casos en orden ascendente.


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

Bb546145.collapse_all(es-es,VS.110).gifOrdenación secundaria descendente

En el ejemplo siguiente se muestra cómo utilizar la cláusula orderbydescending (Order By Descending en Visual Basic) en una consulta LINQ para realizar una ordenación principal, en orden ascendente, y una ordenación secundaria, en orden descendente.Las cadenas se ordenan primero por longitud y después por la primera letra de la cadena.


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

Vea también

Tareas

Cómo: Ordenar los resultados de una cláusula join (Guía de programación de C#)

Cómo: Ordenar los resultados de una consulta mediante LINQ (Visual Basic)

Cómo: Ordenar o filtrar datos de texto por palabra o campo (LINQ)

Referencia

orderby (Cláusula, Referencia de C#)

Order By (Cláusula, Visual Basic)

System.Linq

Conceptos

Información general sobre operadores de consulta estándar