我需要使用实体框架按2列排序。
这是怎么做到的?
return _repository.GetSomething().OrderBy(x => x.Col1 .. Col2)?
即
SELECT * FROM Foo ORDER BY Col1, Col2
答案 0 :(得分:202)
试试OrderBy(x => x.Col1).ThenBy(x => x.Col2)
。无论如何,这是一个LINQ功能,并非EF专有。
答案 1 :(得分:47)
另一种方式:
qqq.OrderBy(x => new { x.Col1, x.Col2} )
答案 2 :(得分:17)
尝试:
OrderBy(x => x.Col1).ThenBy(x => x.Col2)
按降序排序试试这个:
OrderByDescending (x => x.Col1).ThenByDescending (x => x.Col2)
答案 3 :(得分:3)
以下排序发生在数据库级别。不在返回的结果上。
尝试:
IQueryable<a>.OrderBy("col1 asc, col2 asc")
示例1:
ctx.CateringOrders.OrderBy("Details.DeliveryDate asc, Details.DeliveryTime asc")
示例2:
ctx.CateringOrders.OrderBy("{0} {1}, {2} {3}",
"Details.DeliveryDate", "asc",
"Details.DeliveryTime", "asc"
)
哪里
IQueryable<a>
是实体查询,
"col1 asc"
是第1列和排序方向
"col2 asc"
是第2列和排序方向
答案 4 :(得分:-5)
请注意,这不适用于Telerik的Grid或任何其他Telerik的DataSource组件。虽然它使用预过滤的IQueryable对象,但排序总是自动完成,因为最后一步有效地覆盖了排序设置。