Enumerable.ThenByDescending Método

Definición

Realiza una clasificación posterior de los elementos de una secuencia en orden descendente.Performs a subsequent ordering of the elements in a sequence in descending order.

Sobrecargas

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

Realiza una clasificación posterior de los elementos de una secuencia en orden descendente con arreglo a una clave.Performs a subsequent ordering of the elements in a sequence in descending order, according to a key.

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

Realiza una clasificación posterior de los elementos de una secuencia en orden descendente utilizando un comparador especificado.Performs a subsequent ordering of the elements in a sequence in descending order by using a specified comparer.

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

Realiza una clasificación posterior de los elementos de una secuencia en orden descendente con arreglo a una clave.Performs a subsequent ordering of the elements in a sequence in descending order, according to a key.

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IOrderedEnumerable<TSource> ^ ThenByDescending(System::Linq::IOrderedEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector);
public static System.Linq.IOrderedEnumerable<TSource> ThenByDescending<TSource,TKey> (this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector);
static member ThenByDescending : System.Linq.IOrderedEnumerable<'Source> * Func<'Source, 'Key> -> System.Linq.IOrderedEnumerable<'Source>
<Extension()>
Public Function ThenByDescending(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.The type of the elements of source.

TKey

Tipo de la clave devuelta por keySelector.The type of the key returned by keySelector.

Parámetros

source
IOrderedEnumerable<TSource>

IOrderedEnumerable<TElement> que contiene los elementos que se van a ordenar.An IOrderedEnumerable<TElement> that contains elements to sort.

keySelector
Func<TSource,TKey>

Función para extraer una clave a partir de cada elemento.A function to extract a key from each element.

Devoluciones

IOrderedEnumerable<TSource>

Una interfaz IOrderedEnumerable<TElement> cuyos elementos se ordenan de manera descendente con arreglo a una clave.An IOrderedEnumerable<TElement> whose elements are sorted in descending order according to a key.

Excepciones

source o keySelector es null.source or keySelector is null.

Comentarios

Este método se implementa mediante la ejecución aplazada.This method is implemented by using deferred execution. El valor devuelto inmediato es un objeto que almacena toda la información necesaria para realizar la acción.The immediate return value is an object that stores all the information that is required to perform the action. La consulta representada por este método no se ejecuta hasta que el objeto se enumera mediante una llamada a su GetEnumerator método directamente o mediante foreach en Visual C# o For Each en Visual Basic.The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator method directly or by using foreach in Visual C# or For Each in Visual Basic.

Para ordenar una secuencia por los valores de los propios elementos, especifique la función de identidad ( x => x en Visual C# o Function(x) x en Visual Basic) para keySelector .To order a sequence by the values of the elements themselves, specify the identity function (x => x in Visual C# or Function(x) x in Visual Basic) for 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.ThenBy and ThenByDescending are defined to extend the type IOrderedEnumerable<TElement>, which is also the return type of these methods. Este diseño le permite especificar varios criterios de ordenación aplicando cualquier número ThenBy de ThenByDescending métodos o.This design enables you to specify multiple sort criteria by applying any number of ThenBy or ThenByDescending methods.

Nota

Dado IOrderedEnumerable<TElement> que hereda de IEnumerable<T> , puede llamar OrderBy a o a OrderByDescending los resultados de una llamada a OrderBy , OrderByDescending ThenBy o ThenByDescending .Because IOrderedEnumerable<TElement> inherits from IEnumerable<T>, you can call OrderBy or OrderByDescending on the results of a call to OrderBy, OrderByDescending, ThenBy or ThenByDescending. Al hacerlo, se introduce una nueva ordenación principal que omite la ordenación previamente establecida.Doing this introduces a new primary ordering that ignores the previously established ordering.

Este método de ordenación compara las claves utilizando el comparador predeterminado Default .This sorting method compares keys by using the default comparer Default.

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.This method performs a stable sort; that is, if the keys of two elements are equal, the order of the elements is preserved. Por el contrario, una ordenación inestable no conserva el orden de los elementos que tienen la misma clave.In contrast, an unstable sort does not preserve the order of elements that have the same key.

En la sintaxis de las expresiones de consulta de Visual C#, una orderby [first criterion], [second criterion] descending cláusula se convierte en una invocación de ThenByDescending .In Visual C# query expression syntax, an orderby [first criterion], [second criterion] descending clause translates to an invocation of ThenByDescending.

En Visual Basic sintaxis de expresiones de consulta, una Order By [first criterion], [second criterion] Descending cláusula se convierte en una invocación de ThenByDescending .In Visual Basic query expression syntax, an Order By [first criterion], [second criterion] Descending clause translates to an invocation of ThenByDescending.

Consulte también

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

Realiza una clasificación posterior de los elementos de una secuencia en orden descendente utilizando un comparador especificado.Performs a subsequent ordering of the elements in a sequence in descending order by using a specified comparer.

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IOrderedEnumerable<TSource> ^ ThenByDescending(System::Linq::IOrderedEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, System::Collections::Generic::IComparer<TKey> ^ comparer);
public static System.Linq.IOrderedEnumerable<TSource> ThenByDescending<TSource,TKey> (this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IComparer<TKey> comparer);
public static System.Linq.IOrderedEnumerable<TSource> ThenByDescending<TSource,TKey> (this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IComparer<TKey>? comparer);
static member ThenByDescending : System.Linq.IOrderedEnumerable<'Source> * Func<'Source, 'Key> * System.Collections.Generic.IComparer<'Key> -> System.Linq.IOrderedEnumerable<'Source>
<Extension()>
Public Function ThenByDescending(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.The type of the elements of source.

TKey

Tipo de la clave devuelta por keySelector.The type of the key returned by keySelector.

Parámetros

source
IOrderedEnumerable<TSource>

IOrderedEnumerable<TElement> que contiene los elementos que se van a ordenar.An IOrderedEnumerable<TElement> that contains elements to sort.

keySelector
Func<TSource,TKey>

Función para extraer una clave a partir de cada elemento.A function to extract a key from each element.

comparer
IComparer<TKey>

IComparer<T> para comparar claves.An IComparer<T> to compare keys.

Devoluciones

IOrderedEnumerable<TSource>

Una interfaz IOrderedEnumerable<TElement> cuyos elementos se ordenan de manera descendente con arreglo a una clave.An IOrderedEnumerable<TElement> whose elements are sorted in descending order according to a key.

Excepciones

source o keySelector es null.source or keySelector is null.

Ejemplos

En el ejemplo de código siguiente se muestra cómo utilizar ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) para realizar una ordenación secundaria de los elementos de una secuencia en orden descendente mediante un comparador personalizado.The following code example demonstrates how to use ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) to perform a secondary ordering of the elements in a sequence in descending order by using a custom comparer.

public class CaseInsensitiveComparer : IComparer<string>
{
    public int Compare(string x, string y)
    {
        return string.Compare(x, y, true);
    }
}

public static void ThenByDescendingEx1()
{
    string[] fruits = { "apPLe", "baNanA", "apple", "APple", "orange", "BAnana", "ORANGE", "apPLE" };

    // Sort the strings first ascending by their length and
    // then descending using a custom case insensitive comparer.
    IEnumerable<string> query =
        fruits
        .OrderBy(fruit => fruit.Length)
        .ThenByDescending(fruit => fruit, new CaseInsensitiveComparer());

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

/*
    This code produces the following output:

    apPLe
    apple
    APple
    apPLE
    orange
    ORANGE
    baNanA
    BAnana
*/
' This class provides a custom implementation of the Compare() method.
Class CaseInsensitiveComparer
    Implements IComparer(Of String)

    Function Compare(ByVal x As String, ByVal y As String) As Integer _
    Implements IComparer(Of String).Compare

        ' Compare values and ignore case.
        Return String.Compare(x, y, True)
    End Function
End Class

Sub ThenByDescendingEx1()
    Dim fruits() As String =
    {"apPLe", "baNanA", "apple", "APple", "orange", "BAnana", "ORANGE", "apPLE"}

    ' Sort the strings first by their length and then 
    ' by using a custom "case insensitive" comparer.
    Dim query As IEnumerable(Of String) =
    fruits _
    .OrderBy(Function(fruit) fruit.Length) _
    .ThenByDescending(Function(fruit) fruit, New CaseInsensitiveComparer())

    ' 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())
End Sub

' This code produces the following output:

' apPLe
' apple
' APple
' apPLE
' orange
' ORANGE
' baNanA
' BAnana

Comentarios

Este método se implementa mediante la ejecución aplazada.This method is implemented by using deferred execution. El valor devuelto inmediato es un objeto que almacena toda la información necesaria para realizar la acción.The immediate return value is an object that stores all the information that is required to perform the action. La consulta representada por este método no se ejecuta hasta que el objeto se enumera mediante una llamada a su GetEnumerator método directamente o mediante foreach en Visual C# o For Each en Visual Basic.The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator method directly or by using foreach in Visual C# or For Each in Visual Basic.

Para ordenar una secuencia por los valores de los propios elementos, especifique la función de identidad ( x => x en Visual C# o Function(x) x en Visual Basic) para keySelector .To order a sequence by the values of the elements themselves, specify the identity function (x => x in Visual C# or Function(x) x in Visual Basic) for 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.ThenBy and ThenByDescending are defined to extend the type IOrderedEnumerable<TElement>, which is also the return type of these methods. Este diseño le permite especificar varios criterios de ordenación aplicando cualquier número ThenBy de ThenByDescending métodos o.This design enables you to specify multiple sort criteria by applying any number of ThenBy or ThenByDescending methods.

Nota

Dado IOrderedEnumerable<TElement> que hereda de IEnumerable<T> , puede llamar OrderBy a o a OrderByDescending los resultados de una llamada a OrderBy , OrderByDescending ThenBy o ThenByDescending .Because IOrderedEnumerable<TElement> inherits from IEnumerable<T>, you can call OrderBy or OrderByDescending on the results of a call to OrderBy, OrderByDescending, ThenBy or ThenByDescending. Al hacerlo, se introduce una nueva ordenación principal que omite la ordenación previamente establecida.Doing this introduces a new primary ordering that ignores the previously established ordering.

Si comparer es null , se utiliza el comparador predeterminado Default para comparar las claves.If comparer is null, the default comparer Default is used to compare keys.

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.This method performs a stable sort; that is, if the keys of two elements are equal, the order of the elements is preserved. Por el contrario, una ordenación inestable no conserva el orden de los elementos que tienen la misma clave.In contrast, an unstable sort does not preserve the order of elements that have the same key.

Se aplica a