"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
Lasse Edsvik
sumber

Jawaban:

245

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

Konamiman
sumber
51

Cara lain:

qqq.OrderBy(x => new { x.Col1, x.Col2} )
parfilko.dll
sumber
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)
hojjat.mi
sumber
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

e03050
sumber
-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

lukyer
sumber