LINQ 2实体查询不工作,但为什么?
所有人!)) 这是代码LINQ 2实体查询不工作,但为什么?,linq,entity-framework,datetime,linq-to-entities,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 = (f
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中的日期时间字段。
和-表中没有记录
我差点忘了——这是什么意思——“不起作用”。
应用程序将不会在该查询(第一次)之后到达断点,不会出现任何错误,也不会出现任何问题
谢谢。您可以调用
record.timestamp.Date
,因为EF无法将其转换为所需的表达式树(然后将其转换为sql命令)。事实上,EF支持有限数量的函数和属性,但对于DateTime,EF有一些好的特性。您可以在您的案例中使用它们,例如,您可以使用Day()、Month()、Year()函数来解决您的问题(请参见链接)。当您在调试器中单击“break”时会发生什么?它在做什么?应用程序在第一次查询后永远不会到达断点。@单色,我不能确切地说为什么,应该看到day的实现,但我猜它是一个没有复杂规则的简单属性,并且可以转换,正如我提到的EF支持少量简单属性。