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>>)

依據索引鍵,按遞減順序執行序列中項目的後續排序作業。

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IOrderedQueryable<TSource> ^ ThenByDescending(System::Linq::IOrderedQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector);
public static System.Linq.IOrderedQueryable<TSource> ThenByDescending<TSource,TKey> (this System.Linq.IOrderedQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector);
static member ThenByDescending : System.Linq.IOrderedQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> -> System.Linq.IOrderedQueryable<'Source>
<Extension()>
Public Function ThenByDescending(Of TSource, TKey) (source As IOrderedQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey))) As IOrderedQueryable(Of TSource)

類型參數

TSource

source 項目的類型。

TKey

keySelector 表示之函式所傳回索引鍵的型別。

參數

source
IOrderedQueryable<TSource>

包含要排序之項目的 IOrderedQueryable<T>

keySelector
Expression<Func<TSource,TKey>>

用來從各個項目擷取索引鍵的函式。

傳回

IOrderedQueryable<TSource>

依據索引鍵按遞減順序排序其項目的 IOrderedQueryable<T>

例外狀況

sourcekeySelectornull

備註

這個方法至少有一個類型的參數,其類型 Expression<TDelegate> 引數為其中一個型別 Func<T,TResult> 。 針對這些參數,您可以傳入 Lambda 運算式,並將它編譯為 Expression<TDelegate>

方法 ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) 會產生 , MethodCallExpression 表示呼叫 ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) 本身為建構的泛型方法。 然後,它會將 傳遞給 MethodCallExpression CreateQuery<TElement>(Expression) 參數之 屬性所 Provider 表示的 方法 IQueryProvider source 。 呼叫 CreateQuery<TElement>(Expression) 的結果會轉換成類型 IOrderedQueryable<T> 並傳回。

執行表示呼叫 ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) 的運算式樹狀結構所產生的查詢行為,取決於參數類型的實作 source 。 預期的行為是它會根據 叫用 keySelector 的每個元素 source 所取得的索引鍵,以遞減循序執行 的 source 次要排序。 會保留所有先前建立的排序次序。

適用於

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

使用指定的比較子,依遞減順序執行序列中項目的後續排序作業。

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IOrderedQueryable<TSource> ^ ThenByDescending(System::Linq::IOrderedQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Collections::Generic::IComparer<TKey> ^ comparer);
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);
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);
static member ThenByDescending : System.Linq.IOrderedQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Collections.Generic.IComparer<'Key> -> System.Linq.IOrderedQueryable<'Source>
<Extension()>
Public Function ThenByDescending(Of TSource, TKey) (source As IOrderedQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), comparer As IComparer(Of TKey)) As IOrderedQueryable(Of TSource)

類型參數

TSource

source 項目的類型。

TKey

keySelector 函式所傳回索引鍵的型別。

參數

source
IOrderedQueryable<TSource>

包含要排序之項目的 IOrderedQueryable<T>

keySelector
Expression<Func<TSource,TKey>>

用來從各個項目擷取索引鍵的函式。

comparer
IComparer<TKey>

用來比較金鑰的 IComparer<T>

傳回

IOrderedQueryable<TSource>

依據索引鍵按遞減順序排序其項目的集合。

例外狀況

sourcekeySelectorcomparernull

範例

下列程式碼範例示範如何使用 ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) 自訂比較子,以遞減循序執行序列中專案的次要順序。

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
*/
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 ascending by their length and 
    ' then descending by using a custom case insensitive comparer.
    Dim query = fruits.AsQueryable() _
        .OrderBy(Function(fruit) fruit.Length) _
        .ThenByDescending(Function(fruit) fruit, New CaseInsensitiveComparer())

    Dim output As New System.Text.StringBuilder
    For Each fruit As String In query
        output.AppendLine(fruit)
    Next

    ' Display the results.
    MsgBox(output.ToString())
End Sub

' This code produces the following output:

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

備註

這個方法至少有一個類型的參數,其類型 Expression<TDelegate> 引數為其中一個型別 Func<T,TResult> 。 針對這些參數,您可以傳入 Lambda 運算式,並將它編譯為 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>) 本身為建構的泛型方法。 然後,它會將 傳遞給 MethodCallExpression CreateQuery<TElement>(Expression) 參數之 屬性所 Provider 表示的 方法 IQueryProvider source 。 呼叫 CreateQuery<TElement>(Expression) 的結果會轉換成類型 IOrderedQueryable<T> 並傳回。

執行表示呼叫 ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) 的運算式樹狀結構所產生的查詢行為,取決於參數類型的實作 source 。 預期的行為是它會根據 叫用 keySelector 的每個元素 source 所取得的索引鍵,以遞減循序執行 的 source 次要排序。 會保留所有先前建立的排序次序。 參數 comparer 是用來比較索引鍵值。

適用於