Прочитать на английском

Поделиться через


Queryable.ThenByDescending Метод

Определение

Выполняет дополнительное упорядочение элементов последовательности в порядке убывания.

Перегрузки

ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>)

Выполняет дополнительное упорядочение элементов последовательности в порядке убывания ключа.

ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>)

Выполняет дополнительное упорядочение элементов последовательности в порядке убывания с использованием указанного компаратора.

ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>)

Исходный код:
Queryable.cs
Исходный код:
Queryable.cs
Исходный код:
Queryable.cs

Выполняет дополнительное упорядочение элементов последовательности в порядке убывания ключа.

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

Параметры типа

TSource

Тип элементов source.

TKey

Тип ключа, возвращаемого функцией, заданной параметром keySelector.

Параметры

source
IOrderedQueryable<TSource>

Объект IOrderedQueryable<T>, содержащий сортируемые элементы.

keySelector
Expression<Func<TSource,TKey>>

Функция, извлекающая ключ из каждого элемента.

Возвращаемое значение

Объект IOrderedQueryable<T>, элементы которого отсортированы по ключу в порядке убывания.

Исключения

Параметр source или keySelector имеет значение null.

Комментарии

Этот метод имеет по крайней мере один параметр типа Expression<TDelegate> , аргумент типа которого является одним из Func<T,TResult> типов. Для этих параметров можно передать лямбда-выражение, и оно будет скомпилировано Expression<TDelegate>в .

Метод ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) создает объект , MethodCallExpression представляющий вызов ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) как сконструированный универсальный метод. Затем он передает MethodCallExpressionCreateQuery<TElement>(Expression) в метод объекта , представленный IQueryProvider свойством Providersource параметра . Результат вызова CreateQuery<TElement>(Expression) приводится к типу IOrderedQueryable<T> и возвращается.

Поведение запроса, возникающее в результате выполнения дерева выражений, представляющего вызов ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) , зависит от реализации типа source параметра. Ожидаемое поведение заключается в том, что он выполняет дополнительный тип элементов source в порядке убывания на основе ключа, полученного путем вызова keySelector для каждого элемента .source Все ранее установленные порядки сортировки сохраняются.

Применяется к

.NET 9 и другие версии
Продукт Версии
.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 2.0, 2.1
UWP 10.0

ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>)

Исходный код:
Queryable.cs
Исходный код:
Queryable.cs
Исходный код:
Queryable.cs

Выполняет дополнительное упорядочение элементов последовательности в порядке убывания с использованием указанного компаратора.

C#
public static System.Linq.IOrderedQueryable<TSource> ThenByDescending<TSource,TKey> (this System.Linq.IOrderedQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Collections.Generic.IComparer<TKey> comparer);
C#
public static System.Linq.IOrderedQueryable<TSource> ThenByDescending<TSource,TKey> (this System.Linq.IOrderedQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Collections.Generic.IComparer<TKey>? comparer);

Параметры типа

TSource

Тип элементов source.

TKey

Тип ключа, возвращаемого функцией keySelector.

Параметры

source
IOrderedQueryable<TSource>

Объект IOrderedQueryable<T>, содержащий сортируемые элементы.

keySelector
Expression<Func<TSource,TKey>>

Функция, извлекающая ключ из каждого элемента.

comparer
IComparer<TKey>

Компаратор IComparer<T>, используемый для сравнения ключей.

Возвращаемое значение

Коллекция, элементы которой отсортированы по ключу в порядке убывания.

Исключения

Параметр source, keySelector или comparer имеет значение null.

Примеры

В следующем примере кода показано, как использовать ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) для выполнения вторичного упорядочения элементов в последовательности в порядке убывания с помощью пользовательского компаратора.

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.AsQueryable()
        .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
*/

Комментарии

Этот метод имеет по крайней мере один параметр типа Expression<TDelegate> , аргумент типа которого является одним из Func<T,TResult> типов. Для этих параметров можно передать лямбда-выражение, и оно будет скомпилировано Expression<TDelegate>в .

Метод ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) создает объект , MethodCallExpression представляющий вызов ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) как сконструированный универсальный метод. Затем он передает MethodCallExpressionCreateQuery<TElement>(Expression) в метод объекта , представленный IQueryProvider свойством Providersource параметра . Результат вызова CreateQuery<TElement>(Expression) приводится к типу IOrderedQueryable<T> и возвращается.

Поведение запроса, возникающее в результате выполнения дерева выражений, представляющего вызов ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) , зависит от реализации типа source параметра. Ожидаемое поведение заключается в том, что он выполняет дополнительный тип элементов source в порядке убывания на основе ключа, полученного путем вызова keySelector для каждого элемента .source Все ранее установленные порядки сортировки сохраняются. Параметр comparer используется для сравнения значений ключей.

Применяется к

.NET 9 и другие версии
Продукт Версии
.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 2.0, 2.1
UWP 10.0