Queryable.ThenBy Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Provede následné řazení prvků ve vzestupném pořadí.
Přetížení
| Name | Description |
|---|---|
| ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) |
Provede následné řazení prvků ve vzestupném pořadí pomocí zadaného porovnávače. |
| ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) |
Provede následné řazení prvků ve vzestupném pořadí podle klíče. |
ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>)
- Zdroj:
- Queryable.cs
- Zdroj:
- Queryable.cs
- Zdroj:
- Queryable.cs
- Zdroj:
- Queryable.cs
- Zdroj:
- Queryable.cs
Provede následné řazení prvků 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);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")]
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>
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")>]
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 prvků .source
- TKey
Typ klíče vráceného funkcí reprezentovanou keySelectorfunkcí .
Parametry
- source
- IOrderedQueryable<TSource>
Obsahuje IOrderedQueryable<T> prvky, které se mají seřadit.
- keySelector
- Expression<Func<TSource,TKey>>
Funkce, která extrahuje klíč z každého prvku.
- comparer
- IComparer<TKey>
Porovnávat IComparer<T> klíče.
Návraty
Jejíž IOrderedQueryable<T> prvky jsou seřazeny podle klíče.
- Atributy
Výjimky
source nebo keySelectorcomparer 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 a bude zkompilován do Expression<TDelegate>.
Metoda ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) vygeneruje MethodCallExpression , která představuje samotné volání ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) jako vytvořenou obecnou metodu. Pak předá MethodCallExpression metodu IQueryProviderCreateQuery<TElement>(Expression) reprezentované Provider vlastností parametrusource. Výsledek volání CreateQuery<TElement>(Expression) se přetypuje na typ IOrderedQueryable<T> a vrátí se.
Chování dotazu, ke kterému dochází v důsledku spuštění stromu výrazu, 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í je, že provádí sekundární druh prvků 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íče.
Platí pro
ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>)
- Zdroj:
- Queryable.cs
- Zdroj:
- Queryable.cs
- Zdroj:
- Queryable.cs
- Zdroj:
- Queryable.cs
- Zdroj:
- Queryable.cs
Provede následné řazení prvků 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);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")]
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>
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")>]
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 prvků .source
- TKey
Typ klíče vráceného funkcí reprezentovanou keySelectorfunkcí .
Parametry
- source
- IOrderedQueryable<TSource>
Obsahuje IOrderedQueryable<T> prvky, které se mají seřadit.
- keySelector
- Expression<Func<TSource,TKey>>
Funkce, která extrahuje klíč z každého prvku.
Návraty
Jejíž IOrderedQueryable<T> prvky jsou seřazeny podle klíče.
- Atributy
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 a bude zkompilován do Expression<TDelegate>.
Metoda ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) vygeneruje MethodCallExpression , která představuje samotné volání ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) jako vytvořenou obecnou metodu. Pak předá MethodCallExpression metodu IQueryProviderCreateQuery<TElement>(Expression) reprezentované Provider vlastností parametrusource. Výsledek volání CreateQuery<TElement>(Expression) se přetypuje na typ IOrderedQueryable<T> a vrátí se.
Chování dotazu, ke kterému dochází v důsledku spuštění stromu výrazu, 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í je, že provádí sekundární druh prvků 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í.