【问题标题】:LINQ 2 Entities-query is not working, but why?LINQ 2 实体查询不起作用,但为什么?
【发布时间】:2012-01-12 21:09:26
【问题描述】:

大家! )) 这是代码。

var existingEntities = (from record in globalOne.serviceContext.records_out
                        where record.timestamp.Date == DateTime.Now.Date
                        select record ).ToList();

它不起作用。

另一个代码:

var existingEntities = (from record in globalOne.serviceContext.records_out
                 where record.timestamp.Day == DateTime.Now.Day
                 select record ).ToList();

确实有效。

所以,下一个字符串中的问题 id:

where record.timestamp.**Date** == DateTime.Now.Date

也不行

where record.timestamp.Date.Equals(DateTime.Now.Date)

但是为什么呢?我没有线索。 “时间戳”字段是 MS SQL SERVER 中的 dateTime 字段。 并且 - 表中有 NO 条记录。

我差点忘记了——这是什么意思——“不起作用”。 应用程序在该查询(第一次)之后不会到达断点,没有任何错误,没有任何东西。

谢谢。

【问题讨论】:

  • 在调试器中点击“break”会发生什么?它在做什么?
  • 应用程序在首次查询后永远不会到达断点。

标签: linq entity-framework datetime linq-to-entities


【解决方案1】:

您可以调用record.timestamp.Date,因为 EF 无法将其转换为所需的表达式树(然后将其转换为 sql 命令)。事实上 EF 支持的函数和属性数量有限,但是对于 DateTime,EF 有一些不错的Canonical functions。你可以在你的情况下使用它们,例如你可以使用 Day(),Month(),Year() 函数来解决你的问题(见链接)。

【讨论】:

  • @Monochromie,具体原因我也说不上来,应该看看day的实现,不过我猜是个简单的属性,没有复杂的规则,而且可以转换,前面提到EF支持少量属于简单属性的属性。
猜你喜欢
  • 2016-07-30
  • 2013-03-11
  • 1970-01-01
  • 2013-09-01
  • 2016-09-15
  • 1970-01-01
  • 2020-07-03
  • 2016-11-14
相关资源
最近更新 更多