当我查看我的数据库时,Connections表的Date字段(类型为DateTime)的值为2012-03-01 01:49:02.097。
但是当我想检查用户是否在过去一小时内连接时:
if (user.Connections.Max(t => t.Date).Date.AddHours(1) > DateTime.Now)
日期的时间部分始终为零。
所以我的代码只能在午夜到凌晨1小时之间工作哈哈!
感谢您的帮助!
答案 0 :(得分:6)
.Date
有两个含义,这会造成一些混乱;这里:
t => t.Date
这意味着“访问名为Date
的成员,DateTime
”;所以这里:
.Max(t => t.Date)
这意味着“找到所有Date
成员的最大值,DateTime
”
然而!这样:
).Date.A
^^^^^
表示“获取此值的仅日期部分”(任何DateTime
都有.Date
成员,该成员是该值的仅日期部分);所以是的:那是午夜,然后你加一个小时。所以;不要那样做!你想要的可能是:
if (user.Connections.Max(t => t.Date).AddHours(1) > DateTime.Now)
或者更有效率:
var cutoff = DateTime.Now.AddHours(-1);
if (user.Connections.Any(t => t.Date > cutoff)) {
...
}
可以短路的正弦。