我在将 DB(SQL Server 2008) 的 smalldatetime/datetime 列值与 C# 中的 DateTime.Now 进行比较时遇到问题。 我知道数据库中的日期时间格式和运行应用程序的服务器上的日期时间格式不同,所以我做了类似的事情来“缓存”结果,因此日期时间比较将是本地的而不是在服务器上:
var inactiveAccounts = (from entry in ent.Accounts
where entry.Status == 0
select entry).ToArray();
var accountsFiltered = (from entry in inactiveAccounts
where entry.DeactivationDate < DateTime.Now
select entry).ToArray();
并且在一天中的某些时间我没有得到正确的记录。
我怀疑这是由于 where entry.DeactivationDate < DateTime.Now 日期比较所致。似乎在 EF 中使用日期时间很棘手,请帮助我找出问题所在。
最佳答案
不知道它是否能解决您的问题,但我会创建一个局部变量并设置 DateTime.Now在上面。然后在您的 linq 查询中使用局部变量。
这是完成的,因为每次调用 where 子句时 DateTime.Now 都会在您的查询中进行评估。因此,对于 inactiveAccounts 中的每个条目,您都在处理另一个 DateTime。
此外,如果您想比较没有时间值的日期,您应该使用 DateTime.Today
var inactiveAccounts = (from entry in ent.Accounts
where entry.Status == 0
select entry).ToArray();
DateTime currentDateTime = DateTime.Now;
var accountsFiltered = (from entry in inactiveAccounts
where entry.DeactivationDate < currentDateTime
select entry).ToArray();
关于c# - LINQ to EF4 日期时间比较问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7411355/