Saya memiliki array berikut sebagai input untuk mengurutkan nilai dalam urutan menurun:

var cars = ["8587009748118224023Po","8587009748118224023PP","8587009748118224023P,","8587009748118224023P$","8587009748118224023P<","8587009748118224023P?"]

Di C#, saya menggunakan OrderByDescending dan mendapatkan output berikut

Kode C#:

var rslt= cars.OrderByDescending(a => a);

Hasil (koma ditambahkan setelah setiap nilai):

8587009748118224023PP,
8587009748118224023Po,
8587009748118224023P<,
8587009748118224023P?,
8587009748118224023P,
,
8587009748118224023P$,

Dalam Javascript, saya menggunakan sort dan reverse dan mendapatkan hasil yang berbeda mengikuti

kode javascript:

cars.sort();
cars.reverse();

Hasil:

8587009748118224023Po,
8587009748118224023PP,
8587009748118224023P?,
8587009748118224023P<,
8587009748118224023P,
,
8587009748118224023P$

Adakah yang bisa membantu saya cara mengurutkan nilai dalam C # seperti JavaScript?

4
kombsh 11 Agustus 2017, 08:06

2 jawaban

Jawaban Terbaik

Coba ubah StringComparer:

Array.Sort(cars, StringComparer.Ordinal);
Array.Reverse(cars);
6
Michael Silver 11 Agustus 2017, 05:39

Sepertinya Javascript sedang melakukan pengurutan case-insensitive. Untuk C# Anda perlu secara eksplisit mengatakannya untuk melakukan ini. Jadi ini harus bekerja;

var rslt = cars.OrderByDescending(a => a, StringComparer.OrdinalIgnoreCase);

Sunting:

Setelah pembaruan dari OP kemudian ia menemukan bahwa kasus abaikan tidak diperlukan. Jadi yang berikut ini berhasil;

var rslt = cars.OrderByDescending(a => a, StringComparer.Ordinal);
4
jason.kaisersmith 11 Agustus 2017, 05:59