用LINQ约束时间

时间:2010-12-20 19:17:24

标签: .net asp.net linq-to-sql datetime

我很难在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);

但这似乎不起作用。有什么建议吗?

2 个答案:

答案 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的字符串文字语法,因为它表示字符 - 而不是字符串。