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 karşılaştırıcıyı kullanarak bir dizideki öğ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 bir anahtar ayıklama işlevi.
Döndürülenler
IOrderedEnumerable<TElement> Öğeleri 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. Hemen 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 türünü genişletmek IOrderedEnumerable<TElement>için tanımlanır. Bu yöntemlerden dönüş türü de bu şekildedir. Bu tasarım, istediğiniz sayıda veya ThenByDescending yöntemi uygulayarak birden çok sıralama ölçütü belirtmenizi ThenBy sağlar.
Not
IOrderedEnumerable<TElement>' den IEnumerable<T>devralındığından , OrderByDescendingThenByThenByDescendingveya OrderByDescending çağrısının sonuçlarında veya öğesini OrderByçağırabilirsinizOrderBy. Bunu yapmak, önceden oluşturulmuş sıralamayı yoksayan yeni bir birincil sıralama sağlar.
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 öğe anahtarı 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 bir 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 karşılaştırıcıyı kullanarak bir dizideki öğ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 bir anahtar ayıklama işlevi.
- comparer
- IComparer<TKey>
Anahtarları karşılaştırmak için bir IComparer<T> .
Döndürülenler
IOrderedEnumerable<TElement> Öğeleri 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. Hemen 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 türünü genişletmek IOrderedEnumerable<TElement>için tanımlanır. Bu yöntemlerden dönüş türü de bu şekildedir. Bu tasarım, istediğiniz sayıda veya ThenByDescending yöntemi uygulayarak birden çok sıralama ölçütü belirtmenizi ThenBy sağlar.
Not
IOrderedEnumerable<TElement>' den IEnumerable<T>devralındığından , OrderByDescendingThenByThenByDescendingveya OrderByDescending çağrısının sonuçlarında veya öğesini OrderByçağırabilirsinizOrderBy. Bunu yapmak, önceden oluşturulmuş sıralamayı yoksayan yeni bir birincil sıralama sağlar.
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 öğe anahtarı eşitse, öğelerin sırası korunur. Buna karşılık, kararsız sıralama aynı anahtara sahip öğelerin sırasını korumaz.
Şunlara uygulanır
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin