“使用实体框架按Col1,Col2排序”

时间:2009-11-09 12:04:47

标签: c# .net linq entity-framework

我需要使用实体框架按2列排序。

这是怎么做到的?

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

SELECT * FROM Foo ORDER BY Col1, Col2

5 个答案:

答案 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对象,但排序总是自动完成,因为最后一步有效地覆盖了排序设置。

您必须关注:Specifying default sort in grid