LINQ 2实体查询不起作用,但为什么?

时间:2012-01-12 21:09:26

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

大家好! )) 这是代码。

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)

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

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

感谢。

1 个答案:

答案 0 :(得分:2)

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