linq to entity日期时间查询报错

david_88888 2015-08-24 03:02:17

using (var mySysDB = new SysDB<SysLog>(SysDB<SysLog>.GetConn))
{
DateTime? queryDate = new DateTime(2015, 8, 24);
var bb = mySysDB.SysLog.Where(p => EntityFunctions.DiffDays(p.Date,queryDate) == 0);
var ss = mySysDB.SysLog.Where(p => EntityFunctions.TruncateTime(p.Date) == queryDate);
var aa = from A in mySysDB.SysLog
where EntityFunctions.TruncateTime(A.Date) == queryDate
select A;
int totalRows = bb.Count();
}


说明:Date是日期型字段,查询的时候前端会传一个日期值到后台进行查询某一天的数据,但是运行到int totalRows = bb.Count();获取数据行数赋值的时候就报错:
"LINQ to Entities 不识别方法“System.Nullable`1[System.DateTime] TruncateTime(System.Nullable`1[System.DateTime])”,因此该方法无法转换为存储表达式。"
折腾了一天了,DiffDays,TruncateTime这几个函数都不行,在网上也找了很多资料和我的代码也一样
...全文
354 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
在这路上飘哥 2015-08-28
  • 打赏
  • 举报
回复
老兄,LIinq 不支持这种搞法的,
david_88888 2015-08-24
  • 打赏
  • 举报
回复
引用 10 楼 Z65443344 的回复:
TruncateTime(A.Date) 这里还有A.Date呢 你确定改了之后,错误信息什么变化都没有,行号什么的都没变?
真的没有,真的很纳闷,linq to entity也搞了蛮长时间了,这个问题还真有点鬼!!
於黾 2015-08-24
  • 打赏
  • 举报
回复
TruncateTime(A.Date) 这里还有A.Date呢 你确定改了之后,错误信息什么变化都没有,行号什么的都没变?
david_88888 2015-08-24
  • 打赏
  • 举报
回复
引用 8 楼 Z65443344 的回复:
EntityFunctions.TruncateTime(p.Date) p.Data是可空类型,用TruncateTime函数无法转换
已经把Date设为不可空类型了,还是报那样的错。。。。。。。。。。
於黾 2015-08-24
  • 打赏
  • 举报
回复
EntityFunctions.TruncateTime(p.Date) p.Data是可空类型,用TruncateTime函数无法转换
david_88888 2015-08-24
  • 打赏
  • 举报
回复
打错了,“你们”--》“这样,不好意思”
david_88888 2015-08-24
  • 打赏
  • 举报
回复
引用 2 楼 Z65443344 的回复:
错误信息很明显了,LINQ不识别可空类型
就是把?问号去掉了,设为不可空类型也不行 报这们的错: "LINQ to Entities 不识别方法“System.Nullable`1[System.DateTime] TruncateTime(System.Nullable`1[System.DateTime])”,因此该方法无法转换为存储表达式。"
david_88888 2015-08-24
  • 打赏
  • 举报
回复
引用 4 楼 q107770540 的回复:
var aa = from A in mySysDB.SysLog where A.Date.hasValue && EntityFunctions.TruncateTime(A.Date.value) == queryDate.value select A;
老兄,A.Date.hasValue我这没有hasValue这个属性啊,A.Date.value也没有value,你是怎么点出来的?? 我的版本是.net4.5,ef6
q107770540 2015-08-24
  • 打赏
  • 举报
回复
var aa = from A in mySysDB.SysLog where A.Date.hasValue && EntityFunctions.TruncateTime(A.Date.value) == queryDate.value select A;
於黾 2015-08-24
  • 打赏
  • 举报
回复
错误信息很明显了,LINQ不识别可空类型
於黾 2015-08-24
  • 打赏
  • 举报
回复
System.DateTime?不就是System.Nullable`1[System.DateTime]的简写形式吗,语法糖而已
Jiedy 2015-08-24
  • 打赏
  • 举报
回复
把第一句的 DateTime? queryDate = new DateTime(2015, 8, 24); 换成 DateTime queryDate = new DateTime(2015, 8, 24); 试试

13,347

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET技术前瞻
社区管理员
  • .NET技术前瞻社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧