Enumerable.ThenByDescending Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.
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
.
- 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
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.
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
.
- 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.
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 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.