Queryable.ThenBy Método

Definição

Realiza uma ordenação subsequente dos elementos numa sequência em ordem crescente.

Sobrecargas

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

Realiza uma ordenação subsequente dos elementos numa sequência em ordem crescente usando um comparador especificado.

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

Realiza uma ordenação subsequente dos elementos numa sequência em ordem crescente de acordo com uma tonalidade.

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

Origem:
Queryable.cs
Origem:
Queryable.cs
Origem:
Queryable.cs
Origem:
Queryable.cs
Origem:
Queryable.cs

Realiza uma ordenação subsequente dos elementos numa sequência em ordem crescente usando um comparador especificado.

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)

Parâmetros de Tipo Genérico

TSource

O tipo dos elementos de source.

TKey

O tipo da chave devolvida pela função representada por keySelector.

Parâmetros

source
IOrderedQueryable<TSource>

E IOrderedQueryable<T> que contém elementos para ordenar.

keySelector
Expression<Func<TSource,TKey>>

Uma função para extrair uma chave de cada elemento.

comparer
IComparer<TKey>

E IComparer<T> para comparar tonalidades.

Devoluções

E IOrderedQueryable<T> cujos elementos são ordenados de acordo com uma chave.

Atributos

Exceções

source ou keySelector ou comparer é null.

Observações

Este método tem pelo menos um parâmetro de tipo Expression<TDelegate> cujo argumento de tipo é um dos Func<T,TResult> tipos. Para estes parâmetros, pode-se passar uma expressão lambda e ela será compilada para um Expression<TDelegate>.

O ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) método gera um MethodCallExpression que representa o autodenominado ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) como um método genérico construído. Depois passa o MethodCallExpression para o CreateQuery<TElement>(Expression) método de o IQueryProvider representado pela Provider propriedade do source parâmetro. O resultado da chamada CreateQuery<TElement>(Expression) é lançado para escrever IOrderedQueryable<T> e retornado.

O comportamento de consulta que ocorre como resultado da execução de uma árvore de expressões que representa a chamada ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) depende da implementação do tipo do source parâmetro. O comportamento esperado é que execute um tipo secundário dos elementos de source com base na chave obtida invocando keySelector em cada elemento de source. Todas as ordens de ordenação previamente estabelecidas são preservadas. O comparer parâmetro é usado para comparar valores-chave.

Aplica-se a

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

Origem:
Queryable.cs
Origem:
Queryable.cs
Origem:
Queryable.cs
Origem:
Queryable.cs
Origem:
Queryable.cs

Realiza uma ordenação subsequente dos elementos numa sequência em ordem crescente de acordo com uma tonalidade.

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)

Parâmetros de Tipo Genérico

TSource

O tipo dos elementos de source.

TKey

O tipo da chave devolvida pela função representada por keySelector.

Parâmetros

source
IOrderedQueryable<TSource>

E IOrderedQueryable<T> que contém elementos para ordenar.

keySelector
Expression<Func<TSource,TKey>>

Uma função para extrair uma chave de cada elemento.

Devoluções

E IOrderedQueryable<T> cujos elementos são ordenados de acordo com uma chave.

Atributos

Exceções

source ou keySelector é null.

Exemplos

O exemplo de código seguinte demonstra como usar ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) para realizar uma ordenação secundária dos elementos numa sequência.

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

Observações

Este método tem pelo menos um parâmetro de tipo Expression<TDelegate> cujo argumento de tipo é um dos Func<T,TResult> tipos. Para estes parâmetros, pode-se passar uma expressão lambda e ela será compilada para um Expression<TDelegate>.

O ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) método gera um MethodCallExpression que representa o autodenominado ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) como um método genérico construído. Depois passa o MethodCallExpression para o CreateQuery<TElement>(Expression) método de o IQueryProvider representado pela Provider propriedade do source parâmetro. O resultado da chamada CreateQuery<TElement>(Expression) é lançado para escrever IOrderedQueryable<T> e retornado.

O comportamento de consulta que ocorre como resultado da execução de uma árvore de expressões que representa a chamada ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) depende da implementação do tipo do source parâmetro. O comportamento esperado é que execute um tipo secundário dos elementos de source com base na chave obtida invocando keySelector em cada elemento de source. Todas as ordens de ordenação previamente estabelecidas são preservadas.

Aplica-se a