Saya memiliki kueri linq yang ingin saya pesan berdasarkan f.bar, yang merupakan string, tetapi saya juga ingin mengurutkan berdasarkan f.foo, yang merupakan bidang boolean, terlebih dahulu. Seperti query di bawah ini.
(from f in foo
orderby f.foo, f.bar
select f)
Meskipun kompilasi ini tidak berfungsi seperti yang diharapkan. Itu hanya memerintahkan dengan f.bar mengabaikan bidang boolean.
Saya memang gila, saya tahu, tapi apa yang harus saya lakukan untuk mendapatkan perilaku ini?
Terima kasih
false
(0) muncul sebelumtrue
(1) dalam urutan pengurutan menaik (default).data.OrderBy(d => d.x).ThenBy(d => d.y)
Hanya ingin melakukan ini dan sepertinya sesuatu tanpa urutan implisit. Saya melakukan hal berikut untuk lebih eksplisit:
untuk mengurutkan sesuatu yang benar menjadi salah.
sumber
true
berartia single bit set to 1
? Bagi saya, kebenarantrue > false
adalah sejelas mungkin.true > false
tidak diketahui secara universal, padahal1 > 0
ada..OrderBy(e => e.SomeFlag == true)
akan setara dengan.OrderBy(e => e.SomeFlag)
sedangkan.OrderBy(e => e.SomeFlag ? 0 : 1)
adalah setara dengan.OrderByDescending(e => e.SomeFlag)
. Dua yang pertama mengurutkan salah sebelum benar, dua lainnya mengurutkan benar sebelum salah.Silakan coba kode berikut jika Anda mendapatkan daftar orderby benar.
sumber
Agar lebih eksplisit tentang pesanan yang digunakan.
sumber