ThenByDescending(TSource, TKey) Método (IOrderedEnumerable(TSource), Func(TSource, TKey), IComparer(TKey))
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Enumerable.ThenByDescending<TSource, TKey> (Método) (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.

Espacio de nombres:   System.Linq
Ensamblado:  System.Core (en System.Core.dll)

public static IOrderedEnumerable<TSource> ThenByDescending<TSource, TKey>(
	this IOrderedEnumerable<TSource> source,
	Func<TSource, TKey> keySelector,
	IComparer<TKey> comparer
)

Parámetros

source

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

keySelector

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

comparer

IComparer<T> para comparar claves.

Valor devuelto

Type: System.Linq.IOrderedEnumerable<TSource>

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

Parámetros de tipo

TSource

Tipo de los elementos de source.

TKey

Tipo de la clave devuelta por keySelector.

Exception Condition
ArgumentNullException

source o keySelector es null.

Este método se implementa usando 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 se enumera el objeto mediante una llamada directa a su método GetEnumerator o a través de foreach en Visual C# o For Each en Visual Basic.

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

ThenBy y ThenByDescending se definen para ampliar el tipo IOrderedEnumerable<TElement>, que además 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 métodos ThenBy o ThenByDescending.

System_CAPS_noteNota

Dado que IOrderedEnumerable<TElement> hereda de IEnumerable<T>, puede llamar a OrderBy u OrderByDescending en los resultados de una llamada a OrderBy, OrderByDescending, ThenBy o ThenByDescending.De esta forma, se presenta un nuevo orden primario que hace caso omiso del orden establecido previamente.

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

Este método lleva a cabo 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 el ejemplo de código siguiente se muestra cómo se utiliza 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 utilizando un comparador personalizado.

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

Universal Windows Platform
Disponible desde 4.5
.NET Framework
Disponible desde 3.5
Portable Class Library
Compatible con: portable .NET platforms
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar:
© 2016 Microsoft