Leer en inglés

Compartir a través de


Enumerable.ThenByDescending Método

Definición

Realiza una clasificación posterior de los elementos de una secuencia en orden descendente.

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.

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.

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

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

Realiza una clasificación posterior de los elementos de una secuencia en orden descendente con arreglo a una clave.

C#
public static System.Linq.IOrderedEnumerable<TSource> ThenByDescending<TSource,TKey> (this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector);

Parámetros de tipo

TSource

Tipo de los elementos de source.

TKey

Tipo de la clave devuelta por keySelector.

Parámetros

source
IOrderedEnumerable<TSource>

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

keySelector
Func<TSource,TKey>

Función para extraer una clave a partir de cada elemento.

Devoluciones

Una interfaz IOrderedEnumerable<TElement> cuyos elementos se ordenan de manera descendente con arreglo a 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 GetEnumerator método o mediante foreach en C# o For Each 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 .

Nota

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

Este método de ordenación 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 la expresión de consulta de C#, una orderby [first criterion], [second criterion] descending cláusula se traduce en una invocación de ThenByDescending.

En la sintaxis de la expresión de consulta de Visual Basic, una Order By [first criterion], [second criterion] Descending cláusula se traduce en una invocación de ThenByDescending.

Consulte también

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

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

Realiza una clasificación posterior de los elementos de una secuencia en orden descendente utilizando un comparador especificado.

C#
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);
C#
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);

Parámetros de tipo

TSource

Tipo de los elementos de source.

TKey

Tipo de la clave devuelta por keySelector.

Parámetros

source
IOrderedEnumerable<TSource>

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

keySelector
Func<TSource,TKey>

Función para extraer una clave a partir de cada elemento.

comparer
IComparer<TKey>

IComparer<T> para comparar claves.

Devoluciones

Una interfaz IOrderedEnumerable<TElement> cuyos elementos se ordenan de manera descendente con arreglo a una clave.

Excepciones

source o keySelector es null.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) para realizar una ordenación secundaria de los elementos en una secuencia en orden descendente mediante un comparador personalizado.

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

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 GetEnumerator método o mediante foreach en C# o For Each 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 .

Nota

Dado que IOrderedEnumerable<TElement> hereda de IEnumerable<T>, puede llamar a OrderBy o OrderByDescending en los resultados de una llamada a OrderBy, ThenByOrderByDescendingo 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

.NET 9 y otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0