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.
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 |
|
OrderByDescending |
Ordena los valores de forma descendente. |
orderby … descending |
Order By … Descending |
|
ThenBy |
Realiza una operación de ordenación secundaria de forma ascendente. |
orderby …, … |
Order By …, … |
|
ThenByDescending |
Realiza una operación de ordenación secundaria de forma descendente. |
orderby …, … descending |
Order By …, … Descending |
|
Reverse |
Invierte el orden de los elementos de una colección. |
No es aplicable |
No es aplicable |
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 = {"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 = {"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 = {"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 = {"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)