Enumerable.ThenByDescending 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ı azalan düzende gerçekleştirir.
Aşırı Yüklemeler
ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>) |
Bir dizideki öğelerin sonraki sıralamasını bir anahtara göre azalan düzende gerçekleştirir. |
ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) |
Belirtilen karşılaştırıcıyı kullanarak bir dizideki öğelerin sonraki sıralamasını azalan düzende gerçekleştirir. |
ThenByDescending<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 azalan düzende gerçekleştirir.
public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IOrderedEnumerable<TSource> ^ ThenByDescending(System::Linq::IOrderedEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector);
public static System.Linq.IOrderedEnumerable<TSource> ThenByDescending<TSource,TKey> (this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector);
static member ThenByDescending : System.Linq.IOrderedEnumerable<'Source> * Func<'Source, 'Key> -> System.Linq.IOrderedEnumerable<'Source>
<Extension()>
Public Function ThenByDescending(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 azalan düzende sıralanan bir.
Ö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.
Bu sıralama yöntemi, 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.
C# sorgu ifadesi söz diziminde yan orderby [first criterion], [second criterion] descending
tümcesi çağrısına ThenByDescendingdönüşür.
Visual Basic sorgu ifadesi söz diziminde yan Order By [first criterion], [second criterion] Descending
tümcesi çağrısına ThenByDescendingdönüşür.
Ayrıca bkz.
Şunlara uygulanır
ThenByDescending<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ı azalan düzende gerçekleştirir.
public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IOrderedEnumerable<TSource> ^ ThenByDescending(System::Linq::IOrderedEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, System::Collections::Generic::IComparer<TKey> ^ comparer);
public static System.Linq.IOrderedEnumerable<TSource> ThenByDescending<TSource,TKey> (this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IComparer<TKey> comparer);
public static System.Linq.IOrderedEnumerable<TSource> ThenByDescending<TSource,TKey> (this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IComparer<TKey>? comparer);
static member ThenByDescending : System.Linq.IOrderedEnumerable<'Source> * Func<'Source, 'Key> * System.Collections.Generic.IComparer<'Key> -> System.Linq.IOrderedEnumerable<'Source>
<Extension()>
Public Function ThenByDescending(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 azalan düzende sıralanan bir.
Özel durumlar
source
veya keySelector
şeklindedir null
.
Örnekler
Aşağıdaki kod örneği, özel bir karşılaştırıcı kullanarak bir dizideki öğelerin azalan sırada ikincil sıralamasını gerçekleştirmek için nasıl kullanılacağını ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) gösterir.
public class CaseInsensitiveComparer : IComparer<string>
{
public int Compare(string x, string y)
{
return string.Compare(x, y, true);
}
}
public static void ThenByDescendingEx1()
{
string[] fruits = { "apPLe", "baNanA", "apple", "APple", "orange", "BAnana", "ORANGE", "apPLE" };
// Sort the strings first ascending by their length and
// then descending using a custom case insensitive comparer.
IEnumerable<string> query =
fruits
.OrderBy(fruit => fruit.Length)
.ThenByDescending(fruit => fruit, new CaseInsensitiveComparer());
foreach (string fruit in query)
{
Console.WriteLine(fruit);
}
}
/*
This code produces the following output:
apPLe
apple
APple
apPLE
orange
ORANGE
baNanA
BAnana
*/
' This class provides a custom implementation of the Compare() method.
Class CaseInsensitiveComparer
Implements IComparer(Of String)
Function Compare(ByVal x As String, ByVal y As String) As Integer _
Implements IComparer(Of String).Compare
' Compare values and ignore case.
Return String.Compare(x, y, True)
End Function
End Class
Sub ThenByDescendingEx1()
Dim fruits() As String =
{"apPLe", "baNanA", "apple", "APple", "orange", "BAnana", "ORANGE", "apPLE"}
' Sort the strings first by their length and then
' by using a custom "case insensitive" comparer.
Dim query As IEnumerable(Of String) =
fruits _
.OrderBy(Function(fruit) fruit.Length) _
.ThenByDescending(Function(fruit) fruit, New CaseInsensitiveComparer())
' 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())
End Sub
' This code produces the following output:
' apPLe
' apple
' APple
' apPLE
' orange
' ORANGE
' baNanA
' BAnana
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.