"Pesan berdasarkan Col1, Col2" menggunakan kerangka kerja entitas


118

Saya perlu memesan dengan 2 kolom menggunakan kerangka entitas.

Bagaimana caranya?

return _repository.GetSomething().OrderBy(x => x.Col1   .. Col2)?

yaitu

SELECT * FROM Foo ORDER BY Col1, Col2

Jawaban:


245

Coba OrderBy(x => x.Col1).ThenBy(x => x.Col2). Ini adalah fitur LINQ, tidak eksklusif untuk EF.


51

Cara lain:

qqq.OrderBy(x => new { x.Col1, x.Col2} )

Bagaimana Anda memesan dengan cara ini?
pengguna551113

10
qqq.OrderByDescending (x => baru {x.Col1, x.Col2})
parfilko

7
Saya mendapatkan pesan kesalahan "Setidaknya satu objek harus menerapkan IComparable" saat digunakan dengan EntityFramework Core pada dua bidang string.
enam badai1

26

Mencoba:

OrderBy(x => x.Col1).ThenBy(x => x.Col2)

Untuk memesan dengan turun coba ini:

OrderByDescending (x => x.Col1).ThenByDescending (x => x.Col2)

1

Pengurutan berikut terjadi di tingkat DB. Bukan pada hasil yang dikembalikan.

Mencoba:

IQueryable<a>.OrderBy("col1 asc, col2 asc")

Contoh 1:

ctx.CateringOrders.OrderBy("Details.DeliveryDate asc, Details.DeliveryTime asc")

Contoh 2:

ctx.CateringOrders.OrderBy("{0} {1}, {2} {3}", 
    "Details.DeliveryDate", "asc",
    "Details.DeliveryTime", "asc" 
)

Dimana IQueryable<a>query entitas "col1 asc"adalah kolom 1 dan arah pengurutan "col2 asc"adalah kolom 2 dan arah pengurutan


-6

Harap dicatat, ini tidak akan bekerja dengan Telerik's Grid atau komponen DataSource Telerik lainnya. Meskipun menggunakan objek IQuerable yang telah disaring, pengurutan selalu dilakukan secara otomatis sebagai langkah terakhir yang secara efektif menimpa pengaturan pengurutan Anda.

Anda harus mengikuti: Menentukan pengurutan default dalam kisi

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.