在LINQ中使用DateTime.Add(TimeSpan)
我必须像下面那样运行一个查询。 它实际上更复杂,但重要的部分是:
var results = from b in _context.Bookings where b.ScheduleDate.Add(b.StartTime) >= DateTime.UtcNow select b;
但它给出了以下错误:
LINQ to Entities无法识别方法’System.DateTime.Add方法(System.TimeSpan)’,并且此方法无法转换为商店表达式。
我该如何解决这个问题?
提前致谢。
尝试在System.Data.Objects.SqlClient
命名空间中使用SqlFunctions.DateAdd
方法。 文档在这里 。 这将转换为SQL方法DateAdd
, 在此处记录 。 您可能也有兴趣使用DateDiff
, 在此处记录 。
通常,请查看SqlFunctions中的“公共语言运行时(CLR)方法,这些方法在LINQ to Entities查询中调用数据库中的函数。” LINQ to Entities无法将任何方法调用转换为SQL,但该类中的函数将起作用。
您的另一个选择是执行LINQ to Entities查询(使用ToList
或类似的东西),然后在内存中执行逻辑。
SqlFunctions
仅适用于Microsoft Sql Server。
在纯EF中你可以写:
DbFunctions.AddMilliseconds(x.Date, DbFunctions.DiffMilliseconds(TimeSpan.Zero, x.Time))
这适用于所有数据库适配器
上述就是C#学习教程:在LINQ中使用DateTime.Add(TimeSpan)分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1022978.html