“Đặt hàng theo Col1, Col2” sử dụng khung thực thể


117

Tôi cần sắp xếp theo 2 cột bằng cách sử dụng khung thực thể.

Điều đó được thực hiện như thế nào?

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

I E

SELECT * FROM Foo ORDER BY Col1, Col2

Câu trả lời:


244

Hãy thử OrderBy(x => x.Col1).ThenBy(x => x.Col2). Dù sao thì đó cũng là một tính năng LINQ, không dành riêng cho EF.


50

Cách khác:

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

Làm thế nào để bạn đặt hàng giảm dần theo cách này?
dùng551113,

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

7
Tôi nhận được thông báo lỗi "Ít nhất một đối tượng phải triển khai ICompABLE" khi được sử dụng với EntityFramework Core trên hai trường chuỗi.
sixtstorm1

26

Thử:

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

Đối với thứ tự giảm dần, hãy thử điều này:

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

1

Việc sắp xếp sau xảy ra trong cấp DB. Không có trên kết quả trả về.

Thử:

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

Ví dụ 1:

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

Ví dụ 2:

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

IQueryable<a>Truy vấn thực thể ở đâu , "col1 asc"là cột 1 và hướng sắp xếp "col2 asc"là cột 2 và hướng sắp xếp


-6

Xin lưu ý, điều này sẽ không hoạt động với Telerik's Grid hoặc bất kỳ thành phần DataSource nào khác của Telerik. Mặc dù nó sử dụng đối tượng IQueryable được lọc trước, việc sắp xếp luôn được thực hiện tự động như bước cuối cùng ghi đè hiệu quả cài đặt sắp xếp của bạn.

Bạn phải làm theo: Chỉ định sắp xếp mặc định trong lưới

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.