【发布时间】:2017-02-16 15:19:52
【问题描述】:
我正在尝试按一列上的空值排序我的查询,然后按 this 帖子中看到的另一列排序。
_ctx.Leads.Include(a => a.LeadAttachments)
.Where(s => s.Name.ToLower().StartsWith(filter))
.OrderBy(a=>a.AcceptedOn.HasValue)
.ThenByDescending(a => a.AssignedOn)
.Skip(offSet)
.Take(12)
.ToList()
添加.OrderBy(a=>a.AcceptedOn.HasValue)时出现此错误
EntityFramework.Core.dll 中出现“System.Data.SqlClient.SqlException”类型的异常,但未在用户代码中处理
附加信息:关键字“IS”附近的语法不正确。
FETCH 语句中选项 NEXT 的使用无效。
我的两个按列排序的类型都是Nullable<DateTime>。
这个查询有什么问题?有没有更好的排序方式?
更新:
感谢@vamsi 的回答,我没有这个错误。现在我需要这样排序:
对于AcceptedOn,所有具有null 值的记录都应该排在第一位
所有两个日期都有值的记录应按AssignedOn 而非AcceptedOn 排序
这可能吗?
【问题讨论】:
-
你能显示这个生成的sql是什么吗?
-
我该怎么做?
-
我相信你只是用
ToString替换ToList -
您是否尝试过 .OrderBy(a=>a.AcceptedOn.Value)?
-
@MB - 只需放置
ToString()而不是 `ToList() - 请参阅 this