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

时间:2010-05-11 15:03:16

标签: c# linq

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

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

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

2 个答案:

答案 0 :(得分:6)

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

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

record.Timestamp >= DateTime.Now.AddHours(-24)

为了提高性能,您可以将日期存储在变量中。

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

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

答案 1 :(得分:0)

您正试图在将来和24小时之间搜索所有登录信息......

尝试:

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