Share via


Ordenar datos

Actualización: noviembre 2007

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

Description

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

Ejemplos de ordenación principal

Ordenació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() 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
*/

Ordenació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() 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
*/

Ejemplos de ordenación secundaria

Ordenació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() 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
*/

Ordenació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() 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
*/

Información adicional sobre cómo ordenar los datos

Vea también

Conceptos

Información general sobre operadores de consulta estándar

Referencia

orderby (Cláusula, Referencia de C#)

Order By (Cláusula, Visual Basic)

System.Linq