Queryable.ThenBy Metod

Definition

Utför en efterföljande ordning av elementen i en sekvens i stigande ordning.

Överlagringar

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

Utför en efterföljande ordning av elementen i en sekvens i stigande ordning enligt en nyckel.

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

Utför en efterföljande ordning av elementen i en sekvens i stigande ordning med hjälp av en angiven jämförelse.

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

Utför en efterföljande ordning av elementen i en sekvens i stigande ordning enligt en nyckel.

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)

Typparametrar

TSource

Typen av element sourcei .

TKey

Typen av nyckel som returneras av funktionen som representeras av keySelector.

Parametrar

source
IOrderedQueryable<TSource>

En IOrderedQueryable<T> som innehåller element som ska sorteras.

keySelector
Expression<Func<TSource,TKey>>

En funktion för att extrahera en nyckel från varje element.

Returer

En IOrderedQueryable<T> vars element sorteras enligt en nyckel.

Undantag

source eller keySelector är null.

Exempel

Följande kodexempel visar hur du använder ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) för att utföra en sekundär ordning av elementen i en sekvens.

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

Kommentarer

Den här metoden har minst en parameter av typen Expression<TDelegate> vars typargument är en av typerna Func<T,TResult> . För dessa parametrar kan du skicka ett lambda-uttryck och kompileras till en Expression<TDelegate>.

Metoden ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) genererar en MethodCallExpression som representerar att anropa ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) sig själv som en konstruerad generisk metod. Den skickar sedan till CreateQuery<TElement>(Expression) metoden för den IQueryProvider som representeras av Provider egenskapen för parameternsource.MethodCallExpression Resultatet av anropet CreateQuery<TElement>(Expression) omvandlas till typ IOrderedQueryable<T> och returneras.

Frågebeteendet som uppstår till följd av att ett uttrycksträd som representerar anrop ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) körs beror på implementeringen av source parametertypen. Det förväntade beteendet är att den utför en sekundär typ av elementen source baserat på nyckeln som hämtas genom att keySelector anropa på varje element i source. Alla tidigare etablerade sorteringsordningar bevaras.

Gäller för

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

Utför en efterföljande ordning av elementen i en sekvens i stigande ordning med hjälp av en angiven jämförelse.

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

Typparametrar

TSource

Typen av element sourcei .

TKey

Typen av nyckel som returneras av funktionen som representeras av keySelector.

Parametrar

source
IOrderedQueryable<TSource>

En IOrderedQueryable<T> som innehåller element som ska sorteras.

keySelector
Expression<Func<TSource,TKey>>

En funktion för att extrahera en nyckel från varje element.

comparer
IComparer<TKey>

En IComparer<T> för att jämföra nycklar.

Returer

En IOrderedQueryable<T> vars element sorteras enligt en nyckel.

Undantag

source eller keySelector är comparernull.

Kommentarer

Den här metoden har minst en parameter av typen Expression<TDelegate> vars typargument är en av typerna Func<T,TResult> . För dessa parametrar kan du skicka ett lambda-uttryck och kompileras till en Expression<TDelegate>.

Metoden ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) genererar en MethodCallExpression som representerar att anropa ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) sig själv som en konstruerad generisk metod. Den skickar sedan till CreateQuery<TElement>(Expression) metoden för den IQueryProvider som representeras av Provider egenskapen för parameternsource.MethodCallExpression Resultatet av anropet CreateQuery<TElement>(Expression) omvandlas till typ IOrderedQueryable<T> och returneras.

Frågebeteendet som uppstår till följd av att ett uttrycksträd som representerar anrop ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) körs beror på implementeringen av source parametertypen. Det förväntade beteendet är att den utför en sekundär typ av elementen source baserat på nyckeln som hämtas genom att keySelector anropa på varje element i source. Alla tidigare etablerade sorteringsordningar bevaras. Parametern comparer används för att jämföra nyckelvärden.

Gäller för