C # list.Orderby turun


150

Saya ingin menerima daftar yang diurutkan berdasarkan 'Nama Produk' di urutan menurun .

Mirip dengan fungsi di bawah ini yang mengurutkan daftar dalam urutan menaik, hanya secara terbalik, apakah ini mungkin?

var newList = list.OrderBy(x => x.Product.Name).ToList();

Mungkinkah masalahnya yang Anda tulis toListbukan ToList?
Mark Byers

1
Saya pikir dia bermaksud bahwa itu tidak menerima descendingkata kunci, karena dia tidak memulai ekspresinya denganfrom x in list...
StriplingWarrior

1
Maaf, saya tidak benar-benar menyalin kode itu, tetapi mengetiknya dari memori. Kode aktual saya berfungsi, tetapi hanya mengembalikan daftar yang disortir dalam urutan menaik.
PFranchise

Jawaban:


260

Tentu:

var newList = list.OrderByDescending(x => x.Product.Name).ToList();

Doc: OrderByDescending (IEnumerable, Func) .

Menanggapi komentar Anda:

var newList = list.OrderByDescending(x => x.Product.Name)
                  .ThenBy(x => x.Product.Price)
                  .ToList();

2
Jadi hasil edit Anda akan disortir berdasarkan nama (dari z-> a) lalu harga (rendah -> tinggi)?
PFranchise

11
Ya itu benar. Panggilan ke OrderBy atau ThenBy selalu naik. Metode OrderByDescending dan ThenByDescending adalah apa yang akan Anda gunakan untuk menurun.
StriplingWarrior


11
list.OrderByDescending();

bekerja untukku.


4
Ini tidak melakukan apa-apa tanpa melakukan list = list.OrderByDescending (). ToList ();
Almo

8
var newList = list.OrderBy(x => x.Product.Name).Reverse()

Ini harus melakukan pekerjaan.


1

lihat ini potongan kode dari proyek saya

Saya mencoba memesan ulang daftar berdasarkan properti di dalam model saya,

 allEmployees = new List<Employee>(allEmployees.OrderByDescending(employee => employee.Name));

tapi saya menghadapi masalah ketika small and capital letters exist, jadi untuk menyelesaikannya, saya menggunakan pembanding string.

allEmployees.OrderBy(employee => employee.Name,StringComparer.CurrentCultureIgnoreCase)

-2
list = new List<ProcedureTime>(); sortedList = list.OrderByDescending(ProcedureTime=> ProcedureTime.EndTime).ToList();

Yang berhasil bagi saya untuk menunjukkan waktu yang diurutkan dalam urutan menurun.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.