Enumerable.ThenBy Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bir dizideki öğelerin sonraki sıralamasını artan düzende gerçekleştirir.
Aşırı Yüklemeler
ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>) |
Bir dizideki öğelerin sonraki sıralamasını bir anahtara göre artan düzende gerçekleştirir. |
ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) |
Belirtilen bir karşılaştırıcıyı kullanarak öğelerin sonraki sıralamasını artan düzende gerçekleştirir. |
ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>)
- Kaynak:
- OrderBy.cs
- Kaynak:
- OrderBy.cs
- Kaynak:
- OrderBy.cs
Bir dizideki öğelerin sonraki sıralamasını bir anahtara göre artan düzende gerçekleştirir.
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 source
türü.
- TKey
tarafından keySelector
döndürülen anahtarın türü.
Parametreler
- source
- IOrderedEnumerable<TSource>
IOrderedEnumerable<TElement> Sıralanacak öğeleri içeren bir.
- keySelector
- Func<TSource,TKey>
Her öğeden anahtar ayıklamak için bir işlev.
Döndürülenler
Öğeleri IOrderedEnumerable<TElement> bir anahtara göre sıralanmış olan.
Özel durumlar
source
veya keySelector
şeklindedir null
.
Örnekler
Aşağıdaki kod örneği, bir dizideki öğelerin ikincil sıralamasını gerçekleştirmek için nasıl kullanılacağını ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>) gösterir.
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. Anında dönüş değeri, eylemi gerçekleştirmek için gereken tüm bilgileri depolayan bir nesnedir. Bu yöntemle temsil edilen sorgu, doğrudan yöntemini çağırarak GetEnumerator
veya C# içinde veya For Each
Visual Basic'te kullanarak foreach
nesne numaralandırılana kadar yürütülür.
Bir diziyi öğelerin değerlerine göre sıralamak için keySelector
için identity işlevini (x => x
C# dilinde veya Function(x) x
Visual Basic'te) belirtin.
ThenBy ve ThenByDescending aynı zamanda bu yöntemlerin dönüş türü olan türünü IOrderedEnumerable<TElement>genişletmek için tanımlanır. Bu tasarım, herhangi bir sayıda ThenBy veya ThenByDescending yöntemi uygulayarak birden çok sıralama ölçütü belirtmenizi sağlar.
Not
' den devralındığındanIOrderedEnumerable<TElement>, , ThenByOrderByDescendingveya OrderByDescending çağrısının OrderBysonuçlarında veya ThenByDescendingöğesini çağırabilirsinizOrderBy.IEnumerable<T> Bunu yapmak, önceden oluşturulmuş sıralamayı yoksayan yeni bir birincil sıralamayı tanıtır.
Bu yöntem, varsayılan karşılaştırıcıyı kullanarak anahtarları karşılaştırır Default.
Bu yöntem kararlı bir sıralama gerçekleştirir; diğer bir ifadeyle, iki öğenin anahtarları eşitse, öğelerin sırası korunur. Buna karşılık, kararsız sıralama aynı anahtara sahip öğelerin sırasını korumaz.
Sorgu ifadesi söz diziminde, ( orderby [first criterion], [second criterion]
C#) veya Order By [first criterion], [second criterion]
(Visual Basic) yan tümcesi çağrısına çevrilir ThenBy.
Ayrıca bkz.
Şunlara uygulanır
ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)
- Kaynak:
- OrderBy.cs
- Kaynak:
- OrderBy.cs
- Kaynak:
- OrderBy.cs
Belirtilen bir karşılaştırıcıyı kullanarak öğelerin sonraki sıralamasını artan düzende gerçekleştirir.
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 source
türü.
- TKey
tarafından keySelector
döndürülen anahtarın türü.
Parametreler
- source
- IOrderedEnumerable<TSource>
IOrderedEnumerable<TElement> Sıralanacak öğeleri içeren bir.
- keySelector
- Func<TSource,TKey>
Her öğeden anahtar ayıklamak için bir işlev.
- comparer
- IComparer<TKey>
Anahtarları karşılaştırmak için bir IComparer<T> .
Döndürülenler
Öğeleri IOrderedEnumerable<TElement> bir anahtara göre sıralanmış olan.
Özel durumlar
source
veya keySelector
şeklindedir null
.
Açıklamalar
Bu yöntem ertelenmiş yürütme kullanılarak uygulanır. Anında dönüş değeri, eylemi gerçekleştirmek için gereken tüm bilgileri depolayan bir nesnedir. Bu yöntemle temsil edilen sorgu, doğrudan yöntemini çağırarak GetEnumerator
veya C# içinde veya For Each
Visual Basic'te kullanarak foreach
nesne numaralandırılana kadar yürütülür.
Bir diziyi öğelerin değerlerine göre sıralamak için keySelector
için identity işlevini (x => x
C# dilinde veya Function(x) x
Visual Basic'te) belirtin.
ThenBy ve ThenByDescending aynı zamanda bu yöntemlerin dönüş türü olan türünü IOrderedEnumerable<TElement>genişletmek için tanımlanır. Bu tasarım, herhangi bir sayıda ThenBy veya ThenByDescending yöntemi uygulayarak birden çok sıralama ölçütü belirtmenizi sağlar.
Not
' den devralındığındanIOrderedEnumerable<TElement>, , ThenByOrderByDescendingveya OrderByDescending çağrısının OrderBysonuçlarında veya ThenByDescendingöğesini çağırabilirsinizOrderBy.IEnumerable<T> Bunu yapmak, önceden oluşturulmuş sıralamayı yoksayan yeni bir birincil sıralamayı tanıtır.
ise comparer
null
, anahtarları karşılaştırmak için varsayılan karşılaştırıcı Default kullanılır.
Bu yöntem kararlı bir sıralama gerçekleştirir; diğer bir ifadeyle, iki öğenin anahtarları eşitse, öğelerin sırası korunur. Buna karşılık, kararsız sıralama aynı anahtara sahip öğelerin sırasını korumaz.