我很难在LINQ语句中限制时间。 LINQ我还是新手。我想模仿的SQL是这样的:
SELECT ID, Token, StartTime
FROM Tokens
WHERE Token = '050'
AND StartTime > DATEADD(MI, -30, CURRENT_TIMESTAMP)
此SQL语句仅获取StartTime列中的时间距离当前时间少于30分钟的行。我如何使用LINQ执行此操作?到目前为止,我最好的猜测是
DateTime cutoff = DateTime.Now - new TimeSpan(0, 30, 0);
IEnumerable<Tokens> token = dataContext.Tokens.Where(row => row.Token == "050" &&
row.StartTime > cutoff);
但这似乎不起作用。有什么建议吗?
答案 0 :(得分:0)
您可以在令牌的StartTime中添加30天,并将其与当前日期进行比较。您还应该将标记文本比较为字符串(双引号),因为它可能是VARCHAR2类型。
var token = dataContext.Tokens.Where(r =>
r.Token == "5" &&
r.StartTime.AddDays(30).Date >= DateTime.Now.Date
);
编辑:可能你想显示最近30天的操作,要做到这个日期和时间应该四舍五入到日期 - 更改代码。
答案 1 :(得分:0)
row.Token == '5'
这突然袭击了我。注意在C#中使用sql的字符串文字语法,因为它表示字符 - 而不是字符串。