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();
PFranchise
sumber
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();
StriplingWarrior
sumber
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
23

Iya. Gunakan OrderByDescendingsebagai ganti OrderBy.

Mark Byers
sumber
11
list.OrderByDescending();

bekerja untukku.

Tablet
sumber
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.

Beedjees
sumber
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)
Basheer AL-MOMANI
sumber
-2
list = new List<ProcedureTime>(); sortedList = list.OrderByDescending(ProcedureTime=> ProcedureTime.EndTime).ToList();

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

Archana
sumber