Enumerable.ThenByDescending Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Melakukan pengurutan elemen berikutnya secara berurutan dalam urutan turun.
Overload
ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>) |
Melakukan pengurutan elemen berikutnya secara berurutan secara berurutan, sesuai dengan kunci. |
ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) |
Melakukan pengurutan elemen berikutnya secara berurutan dalam urutan menurun dengan menggunakan perbandingan yang ditentukan. |
ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>)
- Sumber:
- OrderBy.cs
- Sumber:
- OrderBy.cs
- Sumber:
- OrderBy.cs
Melakukan pengurutan elemen berikutnya secara berurutan secara berurutan, sesuai dengan kunci.
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)
Jenis parameter
- TSource
Jenis elemen source
.
- TKey
Jenis kunci yang dikembalikan oleh keySelector
.
Parameter
- source
- IOrderedEnumerable<TSource>
Yang IOrderedEnumerable<TElement> berisi elemen untuk diurutkan.
- keySelector
- Func<TSource,TKey>
Fungsi untuk mengekstrak kunci dari setiap elemen.
Mengembalikan
Elemen IOrderedEnumerable<TElement> yang diurutkan dalam urutan turun sesuai dengan kunci.
Pengecualian
source
atau keySelector
adalah null
.
Keterangan
Metode ini diimplementasikan dengan menggunakan eksekusi yang ditangguhkan. Nilai pengembalian langsung adalah objek yang menyimpan semua informasi yang diperlukan untuk melakukan tindakan. Kueri yang diwakili oleh metode ini tidak dijalankan sampai objek dijumlahkan baik dengan memanggil metodenya GetEnumerator
secara langsung atau dengan menggunakan foreach
dalam C# atau For Each
di Visual Basic.
Untuk mengurutkan urutan berdasarkan nilai elemen itu sendiri, tentukan fungsi identitas (x => x
dalam C# atau Function(x) x
di Visual Basic) untuk keySelector
.
ThenBy dan ThenByDescending didefinisikan untuk memperluas jenis IOrderedEnumerable<TElement>, yang juga merupakan jenis pengembalian dari metode ini. Desain ini memungkinkan Anda menentukan beberapa kriteria pengurutan dengan menerapkan sejumlah ThenBy metode atau ThenByDescending .
Catatan
Karena IOrderedEnumerable<TElement> mewarisi dari IEnumerable<T>, Anda dapat memanggil OrderBy atau OrderByDescending pada hasil panggilan ke OrderBy, OrderByDescending, ThenBy atau ThenByDescending. Melakukan ini memperkenalkan urutan utama baru yang mengabaikan urutan yang ditetapkan sebelumnya.
Metode pengurutan ini membandingkan kunci dengan menggunakan perbandingan Defaultdefault .
Metode ini melakukan pengurutan yang stabil; artinya, jika kunci dari dua elemen sama, urutan elemen dipertahankan. Sebaliknya, pengurutan yang tidak stabil tidak mempertahankan urutan elemen yang memiliki kunci yang sama.
Dalam sintaks ekspresi kueri C#, klausa diterjemahkan orderby [first criterion], [second criterion] descending
ke pemanggilan ThenByDescending.
Dalam sintaks ekspresi kueri Visual Basic, klausa diterjemahkan Order By [first criterion], [second criterion] Descending
ke pemanggilan ThenByDescending.
Lihat juga
Berlaku untuk
ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)
- Sumber:
- OrderBy.cs
- Sumber:
- OrderBy.cs
- Sumber:
- OrderBy.cs
Melakukan pengurutan elemen berikutnya secara berurutan dalam urutan menurun dengan menggunakan perbandingan yang ditentukan.
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)
Jenis parameter
- TSource
Jenis elemen source
.
- TKey
Jenis kunci yang dikembalikan oleh keySelector
.
Parameter
- source
- IOrderedEnumerable<TSource>
Yang IOrderedEnumerable<TElement> berisi elemen untuk diurutkan.
- keySelector
- Func<TSource,TKey>
Fungsi untuk mengekstrak kunci dari setiap elemen.
- comparer
- IComparer<TKey>
IComparer<T> Untuk membandingkan kunci.
Mengembalikan
Elemen IOrderedEnumerable<TElement> yang diurutkan dalam urutan turun sesuai dengan kunci.
Pengecualian
source
atau keySelector
adalah null
.
Contoh
Contoh kode berikut menunjukkan cara menggunakan ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) untuk melakukan urutan sekunder elemen secara berurutan dalam urutan menurun dengan menggunakan perbandingan kustom.
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
Keterangan
Metode ini diimplementasikan dengan menggunakan eksekusi yang ditangguhkan. Nilai pengembalian langsung adalah objek yang menyimpan semua informasi yang diperlukan untuk melakukan tindakan. Kueri yang diwakili oleh metode ini tidak dijalankan sampai objek dijumlahkan baik dengan memanggil metodenya GetEnumerator
secara langsung atau dengan menggunakan foreach
dalam C# atau For Each
di Visual Basic.
Untuk mengurutkan urutan berdasarkan nilai elemen itu sendiri, tentukan fungsi identitas (x => x
dalam C# atau Function(x) x
di Visual Basic) untuk keySelector
.
ThenBy dan ThenByDescending didefinisikan untuk memperluas jenis IOrderedEnumerable<TElement>, yang juga merupakan jenis pengembalian dari metode ini. Desain ini memungkinkan Anda menentukan beberapa kriteria pengurutan dengan menerapkan sejumlah ThenBy metode atau ThenByDescending .
Catatan
Karena IOrderedEnumerable<TElement> mewarisi dari IEnumerable<T>, Anda dapat memanggil OrderBy atau OrderByDescending pada hasil panggilan ke OrderBy, OrderByDescending, ThenBy atau ThenByDescending. Melakukan ini memperkenalkan urutan utama baru yang mengabaikan urutan yang ditetapkan sebelumnya.
Jika comparer
adalah null
, perbandingan Default default digunakan untuk membandingkan kunci.
Metode ini melakukan pengurutan yang stabil; artinya, jika kunci dari dua elemen sama, urutan elemen dipertahankan. Sebaliknya, pengurutan yang tidak stabil tidak mempertahankan urutan elemen yang memiliki kunci yang sama.