使用实体框架比较日期时间 24 小时与 AM/PM 格式
我是实体框架的新手。我在比较日期时间值时遇到问题,因为在我的 SQL Server 数据库中,日期时间值存储为 24 小时格式,而应用程序将时间格式视为 AM/PM 格式。我尝试解析这些字段,但收到错误消息:
LINQ to Entities 不支持指定的类型成员“日期”。仅支持初始值设定项、实体成员和实体导航属性。>
这是我尝试过的:(如果找到任何记录,则返回 true 或 false)
<pre><code>
return !(DB.Eventos.Where(
x =>
(x.Fecha_inicio_evento.Date >= eventos.Fecha_inicio_evento.Date
&&
x.Fecha_inicio_evento.TimeOfDay >= eventos.Fecha_inicio_evento.TimeOfDay
&&
x.Fecha_inicio_evento.Date <= eventos.Fecha_fin_evento.Date
&&
x.Fecha_inicio_evento.TimeOfDay <= eventos.Fecha_fin_evento.TimeOfDay)
||
(x.Fecha_fin_evento.Date >= eventos.Fecha_inicio_evento.Date
&&
x.Fecha_fin_evento.TimeOfDay >= eventos.Fecha_fin_evento.TimeOfDay
&&
x.Fecha_fin_evento.Date <= eventos.Fecha_fin_evento.Date
&&
x.Fecha_fin_evento.TimeOfDay <= eventos.Fecha_fin_evento.TimeOfDay
)).Any());
</code></pre>
您知道有什么方法可以执行此操作吗?
I am new with Entity Framework. I am having problems comparing datetime values since in my SQL Server database the datetime values are stored as 24hs format and the application is taking the time format as A.M./P.M. format. I tried to parse the fields but I get the error message:
The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.>
Here is what I tried: (this returns true or false if there are any record found)
<pre><code>
return !(DB.Eventos.Where(
x =>
(x.Fecha_inicio_evento.Date >= eventos.Fecha_inicio_evento.Date
&&
x.Fecha_inicio_evento.TimeOfDay >= eventos.Fecha_inicio_evento.TimeOfDay
&&
x.Fecha_inicio_evento.Date <= eventos.Fecha_fin_evento.Date
&&
x.Fecha_inicio_evento.TimeOfDay <= eventos.Fecha_fin_evento.TimeOfDay)
||
(x.Fecha_fin_evento.Date >= eventos.Fecha_inicio_evento.Date
&&
x.Fecha_fin_evento.TimeOfDay >= eventos.Fecha_fin_evento.TimeOfDay
&&
x.Fecha_fin_evento.Date <= eventos.Fecha_fin_evento.Date
&&
x.Fecha_fin_evento.TimeOfDay <= eventos.Fecha_fin_evento.TimeOfDay
)).Any());
</code></pre>
Do you know any way to perform that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
数据库
或.Net
不以格式存储日期。格式只是对诸如ToString
之类的方法如何执行任务的描述。因此可以使用运算符以标准方式进行比较。您遇到的错误与实体框架将Linq
查询转换为sql
相关,而Date
则不然支持。如果通过将比较分成两部分来比较日期,那么这是不正确的。 Id
.Date
是.TimeofDay
的更高比较,不应该改变结果,但它确实改变了。使用Fecha_inicio_evento
= 2011-01-02 01:01:01 和Fecha_inicio_evento
= 2011-01-01 02:01:01 检查结果Database
or.Net
does not store date in format. Format is only description for methods likeToString
how to do the task. So comparison can be done standard way with operator. Error you're getting is connected with translationLinq
query tosql
byentity framework
, simplyDate
isn't upported.If by splitting comparison to 2 parts you wanted to compare the dates its not correct. Id
.Date
is higher comparison of the.TimeofDay
shouldn't change result but it does. Chech result withFecha_inicio_evento
= 2011-01-02 01:01:01 andFecha_inicio_evento
= 2011-01-01 02:01:01