Enumerable.ThenBy Método

Definición

Realiza una ordenación posterior de los elementos en una secuencia en orden ascendente.

Sobrecargas

Nombre Description
ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)

Realiza una ordenación posterior de los elementos de una secuencia en orden ascendente mediante un comparador especificado.

ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>)

Realiza una ordenación posterior de los elementos de una secuencia en orden ascendente según una clave.

ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)

Source:
OrderBy.cs
Source:
OrderBy.cs
Source:
OrderBy.cs
Source:
OrderBy.cs
Source:
OrderBy.cs

Realiza una ordenación posterior de los elementos de una secuencia en orden ascendente mediante un comparador especificado.

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IOrderedEnumerable<TSource> ^ ThenBy(System::Linq::IOrderedEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, System::Collections::Generic::IComparer<TKey> ^ comparer);
public static System.Linq.IOrderedEnumerable<TSource> ThenBy<TSource,TKey>(this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IComparer<TKey> comparer);
public static System.Linq.IOrderedEnumerable<TSource> ThenBy<TSource,TKey>(this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IComparer<TKey>? comparer);
static member ThenBy : System.Linq.IOrderedEnumerable<'Source> * Func<'Source, 'Key> * System.Collections.Generic.IComparer<'Key> -> System.Linq.IOrderedEnumerable<'Source>
<Extension()>
Public Function ThenBy(Of TSource, TKey) (source As IOrderedEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), comparer As IComparer(Of TKey)) As IOrderedEnumerable(Of TSource)

Parámetros de tipo

TSource

Tipo de los elementos de source.

TKey

Tipo de la clave devuelta por keySelector.

Parámetros

source
IOrderedEnumerable<TSource>

que IOrderedEnumerable<TElement> contiene elementos que se van a ordenar.

keySelector
Func<TSource,TKey>

Función para extraer una clave de cada elemento.

comparer
IComparer<TKey>

que IComparer<T> se va a comparar las claves.

Devoluciones

IOrderedEnumerable<TElement> cuyos elementos se ordenan según una clave.

Excepciones

source o keySelector es null.

Comentarios

Este método se implementa mediante la ejecución diferida. El valor devuelto inmediato es un objeto que almacena toda la información necesaria para realizar la acción. La consulta representada por este método no se ejecuta hasta que el objeto se enumera llamando directamente a su método /> en C# o en Visual Basic.

Para ordenar una secuencia por los valores de los propios elementos, especifique la función de identidad (x => x en C# o Function(x) x en Visual Basic) para keySelector.

ThenBy y ThenByDescending se definen para extender el tipo IOrderedEnumerable<TElement>, que también es el tipo de valor devuelto de estos métodos. Este diseño permite especificar varios criterios de ordenación aplicando cualquier número de ThenBy métodos o ThenByDescending .

Note

Dado que IOrderedEnumerable<TElement> hereda de IEnumerable<T>, puede llamar a OrderBy o OrderByDescending en los resultados de una llamada a OrderBy, OrderByDescendingThenByo ThenByDescending. Al hacerlo, se presenta una nueva ordenación principal que omite la ordenación establecida anteriormente.

Si comparer es null, el comparador Default predeterminado se usa para comparar claves.

Este método realiza una ordenación estable; es decir, si las claves de dos elementos son iguales, se conserva el orden de los elementos. Por el contrario, una ordenación inestable no conserva el orden de los elementos que tienen la misma clave.

Se aplica a

ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>)

Source:
OrderBy.cs
Source:
OrderBy.cs
Source:
OrderBy.cs
Source:
OrderBy.cs
Source:
OrderBy.cs

Realiza una ordenación posterior de los elementos de una secuencia en orden ascendente según una clave.

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IOrderedEnumerable<TSource> ^ ThenBy(System::Linq::IOrderedEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector);
public static System.Linq.IOrderedEnumerable<TSource> ThenBy<TSource,TKey>(this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector);
static member ThenBy : System.Linq.IOrderedEnumerable<'Source> * Func<'Source, 'Key> -> System.Linq.IOrderedEnumerable<'Source>
<Extension()>
Public Function ThenBy(Of TSource, TKey) (source As IOrderedEnumerable(Of TSource), keySelector As Func(Of TSource, TKey)) As IOrderedEnumerable(Of TSource)

Parámetros de tipo

TSource

Tipo de los elementos de source.

TKey

Tipo de la clave devuelta por keySelector.

Parámetros

source
IOrderedEnumerable<TSource>

que IOrderedEnumerable<TElement> contiene elementos que se van a ordenar.

keySelector
Func<TSource,TKey>

Función para extraer una clave de cada elemento.

Devoluciones

IOrderedEnumerable<TElement> cuyos elementos se ordenan según una clave.

Excepciones

source o keySelector es null.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>) para realizar una ordenación secundaria de los elementos de una secuencia.

string[] fruits = { "grape", "passionfruit", "banana", "mango",
                      "orange", "raspberry", "apple", "blueberry" };

// Sort the strings first by their length and then
//alphabetically by passing the identity selector function.
IEnumerable<string> query =
    fruits.OrderBy(fruit => fruit.Length).ThenBy(fruit => fruit);

foreach (string fruit in query)
{
    Console.WriteLine(fruit);
}

/*
    This code produces the following output:

    apple
    grape
    mango
    banana
    orange
    blueberry
    raspberry
    passionfruit
*/
' Create an array of strings.
Dim fruits() As String =
{"grape", "passionfruit", "banana", "mango",
 "orange", "raspberry", "apple", "blueberry"}

' Sort the strings first by their length and then
' alphabetically by passing the identity function.
Dim query As IEnumerable(Of String) =
fruits _
.OrderBy(Function(fruit) fruit.Length) _
.ThenBy(Function(fruit) fruit)

' Display the results.
Dim output As New System.Text.StringBuilder
For Each fruit As String In query
    output.AppendLine(fruit)
Next
Console.WriteLine(output.ToString())

' This code produces the following output:
'
' apple
' grape
' mango
' banana
' orange
' blueberry
' raspberry
' passionfruit

Comentarios

Este método se implementa mediante la ejecución diferida. El valor devuelto inmediato es un objeto que almacena toda la información necesaria para realizar la acción. La consulta representada por este método no se ejecuta hasta que el objeto se enumera llamando directamente a su método /> en C# o en Visual Basic.

Para ordenar una secuencia por los valores de los propios elementos, especifique la función de identidad (x => x en C# o Function(x) x en Visual Basic) para keySelector.

ThenBy y ThenByDescending se definen para extender el tipo IOrderedEnumerable<TElement>, que también es el tipo de valor devuelto de estos métodos. Este diseño permite especificar varios criterios de ordenación aplicando cualquier número de ThenBy métodos o ThenByDescending .

Note

Dado que IOrderedEnumerable<TElement> hereda de IEnumerable<T>, puede llamar a OrderBy o OrderByDescending en los resultados de una llamada a OrderBy, OrderByDescendingThenByo ThenByDescending. Al hacerlo, se presenta una nueva ordenación principal que omite la ordenación establecida anteriormente.

Este método compara las claves mediante el comparador Defaultpredeterminado .

Este método realiza una ordenación estable; es decir, si las claves de dos elementos son iguales, se conserva el orden de los elementos. Por el contrario, una ordenación inestable no conserva el orden de los elementos que tienen la misma clave.

En la sintaxis de expresión de consulta, una cláusula orderby [first criterion], [second criterion] (C#) o Order By [first criterion], [second criterion] (Visual Basic) se traduce en una invocación de ThenBy.

Consulte también

Se aplica a