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

Las*_*vik 109 .net c# linq entity-framework

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

怎么做的?

return _repository.GetSomething().OrderBy(x => x.Col1   .. Col2)?
Run Code Online (Sandbox Code Playgroud)

SELECT * FROM Foo ORDER BY Col1, Col2
Run Code Online (Sandbox Code Playgroud)

/ M

Kon*_*man 223

试试OrderBy(x => x.Col1).ThenBy(x => x.Col2).无论如何,这是一个LINQ功能,不是EF独有的.


par*_*lko 49

其他方式:

qqq.OrderBy(x => new { x.Col1, x.Col2} )
Run Code Online (Sandbox Code Playgroud)

  • qqq.OrderByDescending(x => new {x.Col1,x.Col2}) (10认同)
  • 当在两个字符串字段上与EntityFramework Core一起使用时,我得到"至少一个对象必须实现IComparable"错误消息. (6认同)

hoj*_*.mi 24

尝试:

OrderBy(x => x.Col1).ThenBy(x => x.Col2)
Run Code Online (Sandbox Code Playgroud)

对于降序排序试试这个:

OrderByDescending (x => x.Col1).ThenByDescending (x => x.Col2)
Run Code Online (Sandbox Code Playgroud)


e03*_*050 6

以下排序发生在数据库级别。不在返回结果上。

尝试:

IQueryable<a>.OrderBy("col1 asc, col2 asc")
Run Code Online (Sandbox Code Playgroud)

示例1:

ctx.CateringOrders.OrderBy("Details.DeliveryDate asc, Details.DeliveryTime asc")
Run Code Online (Sandbox Code Playgroud)

示例2:

ctx.CateringOrders.OrderBy("{0} {1}, {2} {3}", 
    "Details.DeliveryDate", "asc",
    "Details.DeliveryTime", "asc" 
)
Run Code Online (Sandbox Code Playgroud)

其中 IQueryable<a>是实体查询, "col1 asc"是第 1 列和排序方向 "col2 asc"是第 2 列和排序方向