Enumerable.ThenBy Yöntem
Tanım
Bir dizideki öğelerin sonraki sıralamasını artan sırada gerçekleştirir.Performs a subsequent ordering of the elements in a sequence in ascending order.
Aşırı Yüklemeler
ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) |
Belirtilen karşılaştırıcıyı kullanarak bir dizideki öğelerin sonraki sıralamasını artan sırada gerçekleştirir.Performs a subsequent ordering of the elements in a sequence in ascending order by using a specified comparer. |
ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>) |
Bir dizide, bir anahtara göre artan düzende öğelerin sonraki sıralamasını gerçekleştirir.Performs a subsequent ordering of the elements in a sequence in ascending order according to a key. |
ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)
Belirtilen karşılaştırıcıyı kullanarak bir dizideki öğelerin sonraki sıralamasını artan sırada gerçekleştirir.Performs a subsequent ordering of the elements in a sequence in ascending order by using a specified comparer.
public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IOrderedEnumerable<TSource> ^ ThenBy(System::Linq::IOrderedEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, System::Collections::Generic::IComparer<TKey> ^ comparer);
public static System.Linq.IOrderedEnumerable<TSource> ThenBy<TSource,TKey> (this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IComparer<TKey> comparer);
public static System.Linq.IOrderedEnumerable<TSource> ThenBy<TSource,TKey> (this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IComparer<TKey>? comparer);
static member ThenBy : System.Linq.IOrderedEnumerable<'Source> * Func<'Source, 'Key> * System.Collections.Generic.IComparer<'Key> -> System.Linq.IOrderedEnumerable<'Source>
<Extension()>
Public Function ThenBy(Of TSource, TKey) (source As IOrderedEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), comparer As IComparer(Of TKey)) As IOrderedEnumerable(Of TSource)
Tür Parametreleri
- TSource
Öğelerinin türü source
.The type of the elements of source
.
- TKey
Tarafından döndürülen anahtarın türü keySelector
.The type of the key returned by keySelector
.
Parametreler
- source
- IOrderedEnumerable<TSource>
IOrderedEnumerable<TElement>Sıralanacak öğeleri içeren bir.An IOrderedEnumerable<TElement> that contains elements to sort.
- keySelector
- Func<TSource,TKey>
Her öğeden bir anahtarı ayıklamak için bir işlev.A function to extract a key from each element.
- comparer
- IComparer<TKey>
IComparer<T>Anahtarları karşılaştırmak için.An IComparer<T> to compare keys.
Döndürülenler
- IOrderedEnumerable<TSource>
IOrderedEnumerable<TElement>Öğeleri bir anahtara göre sıralanır.An IOrderedEnumerable<TElement> whose elements are sorted according to a key.
Özel durumlar
source
ya keySelector
da null
.source
or keySelector
is null
.
Açıklamalar
Bu yöntem ertelenmiş yürütme kullanılarak uygulanır.This method is implemented by using deferred execution. Anında dönüş değeri, eylemi gerçekleştirmek için gereken tüm bilgileri depolayan bir nesnedir.The immediate return value is an object that stores all the information that is required to perform the action. Bu yöntem tarafından temsil edilen sorgu, nesne GetEnumerator
yöntemi doğrudan çağırarak ya da foreach
Visual C# ' de veya Visual Basic kullanılarak numaralandırılana kadar yürütülmez For Each
.The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator
method directly or by using foreach
in Visual C# or For Each
in Visual Basic.
Öğelerin değerlerine göre sıra sıralamak için kimlik işlevini ( x => x
Visual C# ' ta veya Function(x) x
Visual Basic) için belirtin keySelector
.To order a sequence by the values of the elements themselves, specify the identity function (x => x
in Visual C# or Function(x) x
in Visual Basic) for keySelector
.
ThenBy ve ThenByDescending IOrderedEnumerable<TElement> aynı zamanda bu yöntemlerin dönüş türü olan türü genişletmek için tanımlanmıştır.ThenBy and ThenByDescending are defined to extend the type IOrderedEnumerable<TElement>, which is also the return type of these methods. Bu tasarım, herhangi bir sayıda veya yöntemi uygulayarak birden çok sıralama ölçütü belirtmenizi ThenBy sağlar ThenByDescending .This design enables you to specify multiple sort criteria by applying any number of ThenBy or ThenByDescending methods.
Not
IOrderedEnumerable<TElement>Öğesinden devraldığından,, IEnumerable<T> OrderBy OrderByDescending veya için bir çağrının sonuçlarını çağırabilirsiniz OrderBy OrderByDescending ThenBy ThenByDescending .Because IOrderedEnumerable<TElement> inherits from IEnumerable<T>, you can call OrderBy or OrderByDescending on the results of a call to OrderBy, OrderByDescending, ThenBy or ThenByDescending. Bunu yapmak, önceden belirlenen sıralamayı yok sayan yeni bir birincil sıralama sağlar.Doing this introduces a new primary ordering that ignores the previously established ordering.
comparer
İse null
, Default anahtarları karşılaştırmak için varsayılan karşılaştırıcı kullanılır.If comparer
is null
, the default comparer Default is used to compare keys.
Bu yöntem kararlı bir sıralama gerçekleştirir; diğer bir deyişle, iki öğenin anahtarları eşitse öğelerin sırası korunur.This method performs a stable sort; that is, if the keys of two elements are equal, the order of the elements is preserved. Buna karşılık, kararsız bir sıralama aynı anahtara sahip olan öğelerin sırasını korumaz.In contrast, an unstable sort does not preserve the order of elements that have the same key.
Şunlara uygulanır
ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>)
Bir dizide, bir anahtara göre artan düzende öğelerin sonraki sıralamasını gerçekleştirir.Performs a subsequent ordering of the elements in a sequence in ascending order according to a key.
public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IOrderedEnumerable<TSource> ^ ThenBy(System::Linq::IOrderedEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector);
public static System.Linq.IOrderedEnumerable<TSource> ThenBy<TSource,TKey> (this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector);
static member ThenBy : System.Linq.IOrderedEnumerable<'Source> * Func<'Source, 'Key> -> System.Linq.IOrderedEnumerable<'Source>
<Extension()>
Public Function ThenBy(Of TSource, TKey) (source As IOrderedEnumerable(Of TSource), keySelector As Func(Of TSource, TKey)) As IOrderedEnumerable(Of TSource)
Tür Parametreleri
- TSource
Öğelerinin türü source
.The type of the elements of source
.
- TKey
Tarafından döndürülen anahtarın türü keySelector
.The type of the key returned by keySelector
.
Parametreler
- source
- IOrderedEnumerable<TSource>
IOrderedEnumerable<TElement>Sıralanacak öğeleri içeren bir.An IOrderedEnumerable<TElement> that contains elements to sort.
- keySelector
- Func<TSource,TKey>
Her öğeden bir anahtarı ayıklamak için bir işlev.A function to extract a key from each element.
Döndürülenler
- IOrderedEnumerable<TSource>
IOrderedEnumerable<TElement>Öğeleri bir anahtara göre sıralanır.An IOrderedEnumerable<TElement> whose elements are sorted according to a key.
Özel durumlar
source
ya keySelector
da null
.source
or keySelector
is null
.
Örnekler
Aşağıdaki kod örneği, ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>) bir dizideki öğelerin ikincil sıralamasını gerçekleştirmek için nasıl kullanılacağını gösterir.The following code example demonstrates how to use ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>) to perform a secondary ordering of the elements in a sequence.
string[] fruits = { "grape", "passionfruit", "banana", "mango",
"orange", "raspberry", "apple", "blueberry" };
// Sort the strings first by their length and then
//alphabetically by passing the identity selector function.
IEnumerable<string> query =
fruits.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
*/
' Create an array of strings.
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 function.
Dim query As IEnumerable(Of String) =
fruits _
.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
Console.WriteLine(output.ToString())
' This code produces the following output:
'
' apple
' grape
' mango
' banana
' orange
' blueberry
' raspberry
' passionfruit
Açıklamalar
Bu yöntem ertelenmiş yürütme kullanılarak uygulanır.This method is implemented by using deferred execution. Anında dönüş değeri, eylemi gerçekleştirmek için gereken tüm bilgileri depolayan bir nesnedir.The immediate return value is an object that stores all the information that is required to perform the action. Bu yöntem tarafından temsil edilen sorgu, nesne GetEnumerator
yöntemi doğrudan çağırarak ya da foreach
Visual C# ' de veya Visual Basic kullanılarak numaralandırılana kadar yürütülmez For Each
.The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator
method directly or by using foreach
in Visual C# or For Each
in Visual Basic.
Öğelerin değerlerine göre sıra sıralamak için kimlik işlevini ( x => x
Visual C# ' ta veya Function(x) x
Visual Basic) için belirtin keySelector
.To order a sequence by the values of the elements themselves, specify the identity function (x => x
in Visual C# or Function(x) x
in Visual Basic) for keySelector
.
ThenBy ve ThenByDescending IOrderedEnumerable<TElement> aynı zamanda bu yöntemlerin dönüş türü olan türü genişletmek için tanımlanmıştır.ThenBy and ThenByDescending are defined to extend the type IOrderedEnumerable<TElement>, which is also the return type of these methods. Bu tasarım, herhangi bir sayıda veya yöntemi uygulayarak birden çok sıralama ölçütü belirtmenizi ThenBy sağlar ThenByDescending .This design enables you to specify multiple sort criteria by applying any number of ThenBy or ThenByDescending methods.
Not
IOrderedEnumerable<TElement>Öğesinden devraldığından,, IEnumerable<T> OrderBy OrderByDescending veya için bir çağrının sonuçlarını çağırabilirsiniz OrderBy OrderByDescending ThenBy ThenByDescending .Because IOrderedEnumerable<TElement> inherits from IEnumerable<T>, you can call OrderBy or OrderByDescending on the results of a call to OrderBy, OrderByDescending, ThenBy or ThenByDescending. Bunu yapmak, önceden belirlenen sıralamayı yok sayan yeni bir birincil sıralama sağlar.Doing this introduces a new primary ordering that ignores the previously established ordering.
Bu yöntem, anahtarları varsayılan karşılaştırıcıyı kullanarak karşılaştırır Default .This method compares keys by using the default comparer Default.
Bu yöntem kararlı bir sıralama gerçekleştirir; diğer bir deyişle, iki öğenin anahtarları eşitse öğelerin sırası korunur.This method performs a stable sort; that is, if the keys of two elements are equal, the order of the elements is preserved. Buna karşılık, kararsız bir sıralama aynı anahtara sahip olan öğelerin sırasını korumaz.In contrast, an unstable sort does not preserve the order of elements that have the same key.
Sorgu ifadesi sözdiziminde, bir orderby [first criterion], [second criterion]
(Visual C#) veya Order By [first criterion], [second criterion]
(Visual Basic) yan tümcesi çağrısı yapar ThenBy .In query expression syntax, an orderby [first criterion], [second criterion]
(Visual C#) or Order By [first criterion], [second criterion]
(Visual Basic) clause translates to an invocation of ThenBy.
Ayrıca bkz.
- orderby tümcesi (C# Başvurusu)orderby clause (C# Reference)
- Order By Tümcesi (Visual Basic)Order By Clause (Visual Basic)