LINQ to Entities 不识别方法“System.DateTime AddMinutes(Double)”,因此该方法无法转换为存储表达式。

Squeen_ 2017-09-11 03:19:31
代码如下,求大神帮忙看看:
DateTime local = ParseDateString(localTime, "yyyy-MM-dd HH:mm:ss");
List<MD_BMDM_DST_INFO> dstInfos =
dbContext.MD_BMDM_DST_INFO.Where(
t =>
t.TIME_ZONE_CODE.Equals(timeZoneCode)
&& t.START_STATE.Equals("C")
&& t.START_DATE_TIME < local.AddMinutes(t.DIFF_LST_DST)
&& t.END_STATE.Equals("C")
&& t.END_DATE_TIME > local.AddMinutes(-t.DIFF_LST_DST))
.OrderByDescending(t => t.LAST_UPDATE)
.DistinctBy(t => t.DIFF_LST_DST)
.ToList();
...全文
1981 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Squeen_ 2017-09-12
  • 打赏
  • 举报
回复
解决了,用的EntityFunctions.AddMinutes()。谢谢大家! https://msdn.microsoft.com/en-us/library/system.data.objects.entityfunctions.addminutes(v=vs.110).aspx
正怒月神 2017-09-11
  • 打赏
  • 举报
回复
在没有 本地化资源时,Linq没有办法调用方法。 也就是说,没有转成IEnumerable<T>时不行。 不过在Linq中可以使用下面这个 SqlFunctions.DateAdd("d", 1, r.Date) 需要添加System.Data.entity的引用 https://msdn.microsoft.com/query/dev11.query?appId=Dev11IDEF1&l=ZH-CN&k=k(System.Data.Objects.SqlClient.SqlFunctions.DateAdd);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.5);k(DevLang-csharp)&rd=true
Veary 2017-09-11
  • 打赏
  • 举报
回复
Linq中不能加入你的方法,虽然不知道为什么这么设计,但是应该有人家的道理。 你的逻辑要放在外边写,Linq中只放入变量比较。 另外如果类似这样的代码 也可以写存储过程的。 我说的只是另外一种解决办法,如果你非要这样写,我暂时也没有设什么好的办法,可以看一些Peng的链接。
exception92 2017-09-11
  • 打赏
  • 举报
回复
用EntityFunctions.TruncateTime转换一下:参见https://msdn.microsoft.com/zh-cn/library/system.data.objects.entityfunctions.truncatetime(v=vs.110).aspx
Squeen_ 2017-09-11
  • 打赏
  • 举报
回复
引用 1 楼 a123_z 的回复:
不识别 “ AddMinutes”方法,你就不要在里面直接生成了,在外面定一个参数,然后放进去对比。
可是AddMinutes()需要的参数是linq表达式里面的变量
a123_z 2017-09-11
  • 打赏
  • 举报
回复
不识别 “ AddMinutes”方法,你就不要在里面直接生成了,在外面定一个参数,然后放进去对比。

8,497

社区成员

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

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