Sdílet prostřednictvím


Queryable.ThenBy Metoda

Definice

Provede následné řazení prvků v sekvenci ve vzestupném pořadí.

Přetížení

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

Provede následné řazení prvků v sekvenci ve vzestupném pořadí podle klíče.

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

Provede následné řazení prvků v sekvenci ve vzestupném pořadí pomocí zadaného porovnávače.

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

Zdroj:
Queryable.cs
Zdroj:
Queryable.cs
Zdroj:
Queryable.cs

Provede následné řazení prvků v sekvenci ve vzestupném pořadí podle klíče.

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

Parametry typu

TSource

Typ elementů .source

TKey

Typ klíče vráceného funkcí reprezentovanou keySelectorfunkcí .

Parametry

source
IOrderedQueryable<TSource>

Objekt IOrderedQueryable<T> obsahující prvky, které se mají seřadit.

keySelector
Expression<Func<TSource,TKey>>

Funkce, která extrahuje klíč z každého prvku.

Návraty

Objekt IOrderedQueryable<T> , jehož prvky jsou seřazeny podle klíče.

Výjimky

source nebo keySelector je null.

Příklady

Následující příklad kódu ukazuje, jak použít ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) k provedení sekundárního pořadí prvků v sekvenci.

string[] fruits = { "grape", "passionfruit", "banana", "apple",
                      "orange", "raspberry", "mango", "blueberry" };

// Sort the strings first by their length and then
// alphabetically by passing the identity selector function.
IEnumerable<string> query =
    fruits.AsQueryable()
    .OrderBy(fruit => fruit.Length).ThenBy(fruit => fruit);

foreach (string fruit in query)
    Console.WriteLine(fruit);

/*
    This code produces the following output:

    apple
    grape
    mango
    banana
    orange
    blueberry
    raspberry
    passionfruit
*/
Dim fruits() As String = _
    {"grape", "passionfruit", "banana", "mango", _
     "orange", "raspberry", "apple", "blueberry"}

' Sort the strings first by their length and then 
' alphabetically by passing the identity selector function.
Dim query = fruits.AsQueryable() _
    .OrderBy(Function(fruit) fruit.Length).ThenBy(Function(fruit) fruit)

' Display the results.
Dim output As New System.Text.StringBuilder
For Each fruit As String In query
    output.AppendLine(fruit)
Next
MsgBox(output.ToString())

'This code produces the following output:

'apple
'grape
'mango
'banana
'orange
'blueberry
'raspberry
'passionfruit

Poznámky

Tato metoda má alespoň jeden parametr typu Expression<TDelegate> , jehož argument typu je jedním z Func<T,TResult> typů. Pro tyto parametry můžete předat výraz lambda, který se zkompiluje do Expression<TDelegate>.

Metoda ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) vygeneruje metodu MethodCallExpression , která představuje volání ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) sebe sama jako konstruovanou obecnou metodu. Pak předá MethodCallExpression metodu IQueryProviderCreateQuery<TElement>(Expression) reprezentované Provider vlastností parametru source . Výsledek volání CreateQuery<TElement>(Expression) je přetypován na typ IOrderedQueryable<T> a vrácen.

Chování dotazu, ke kterému dochází v důsledku spuštění stromu výrazů, který představuje volání ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) , závisí na implementaci typu parametru source . Očekávané chování spočívá v tom, že provádí druhotný druh elementů source na základě klíče získaného vyvoláním keySelector každého prvku .source Všechny dříve vytvořené pořadí řazení se zachovají.

Platí pro

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

Zdroj:
Queryable.cs
Zdroj:
Queryable.cs
Zdroj:
Queryable.cs

Provede následné řazení prvků v sekvenci ve vzestupném pořadí pomocí zadaného porovnávače.

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

Parametry typu

TSource

Typ elementů .source

TKey

Typ klíče vráceného funkcí reprezentovanou keySelectorfunkcí .

Parametry

source
IOrderedQueryable<TSource>

Objekt IOrderedQueryable<T> obsahující prvky, které se mají seřadit.

keySelector
Expression<Func<TSource,TKey>>

Funkce, která extrahuje klíč z každého prvku.

comparer
IComparer<TKey>

An IComparer<T> pro porovnání klíčů.

Návraty

Objekt IOrderedQueryable<T> , jehož prvky jsou seřazeny podle klíče.

Výjimky

sourcecomparer nebo keySelector je null.

Poznámky

Tato metoda má alespoň jeden parametr typu Expression<TDelegate> , jehož argument typu je jedním z Func<T,TResult> typů. Pro tyto parametry můžete předat výraz lambda, který se zkompiluje do Expression<TDelegate>.

Metoda ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) vygeneruje metodu MethodCallExpression , která představuje volání ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) sebe sama jako konstruovanou obecnou metodu. Pak předá MethodCallExpression metodu IQueryProviderCreateQuery<TElement>(Expression) reprezentované Provider vlastností parametru source . Výsledek volání CreateQuery<TElement>(Expression) je přetypován na typ IOrderedQueryable<T> a vrácen.

Chování dotazu, ke kterému dochází v důsledku spuštění stromu výrazů, který představuje volání ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) , závisí na implementaci typu parametru source . Očekávané chování spočívá v tom, že provádí druhotný druh elementů source na základě klíče získaného vyvoláním keySelector každého prvku .source Všechny dříve vytvořené pořadí řazení se zachovají. Parametr comparer se používá k porovnání hodnot klíčů.

Platí pro