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

标签 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。

最佳答案

显然问题出在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 即可。

关于c# - Linq,如何指定时间戳条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2811813/

相关文章:

c# - 将 DLL 从 C# 导入到 C++

c# - 字符串索引和子字符串 C#

c# - 分配变量的成本

c# - OnPropertyChanged 上的 "Property Get method was not found"错误

c# - 最好的 c# 异常处理开源工具

c# - 如何以编程方式设置单元格颜色 epplus?

linq - 动态 Linq GroupBy 选择无法正常工作

sqlite - EF CORE 中的 DbFunctions.TruncateTime LINQ 等价物

c# - Linq 集合在 foreach 的下一次迭代中重置

c# - 如何优化此 LINQ 查询以仅执行单个 SQL 命令?