Linq,如何指定时间戳条件?

5Yr*_*DBA 1 c# linq

我有一个logins表记录所有登录和注销活动.我希望在24小时内查看特定用户的所有登录活动.怎么做?这样的事情:

var records = from record in db.Logins
                                where record.Users.UserId == userId
                                    && record.Timestamp <= (DateTime.Now + 24)
                                select record;
Run Code Online (Sandbox Code Playgroud)

record.Timestamp <= (DateTime.Now + 24)这里错了.我正在使用C#3 + L2E.

maf*_*afu 6

显然麻烦源于此DateTime.Now + 24.这是不可能的,因为DateTime类型没有指定+运算符int.

你的意思是:DateTime.Now.AddHours(24)?或者更具体地说,-24(除非您的表包含将来添加的记录).

record.Timestamp >= DateTime.Now.AddHours(-24)
Run Code Online (Sandbox Code Playgroud)

要提高性能,可以将日期存储在变量中.

DateTime since = DateTime.Now.AddHours(-24);
var records = from record in db.Logins
    where record.Users.UserId == userId
        && record.Timestamp >= since
    select record;
Run Code Online (Sandbox Code Playgroud)

如果您的时间戳恰好是刻度线,请since.Ticks改用.