Linq:TimeSpan中2个DateTimes之间的差异

时间:2012-04-18 17:41:49

标签: c# linq linq-to-entities

我正在尝试这样做:

Tickets.Where(t => (t.Date - myTicket.Date) < TimeSpan.FromSeconds(120));

我得到“DbArithmeticExpression参数必须有一个数字公共类型”错误。考虑到我需要TimeSpan中的差异,我怎么能这样做呢?

提前致谢。

3 个答案:

答案 0 :(得分:26)

您可能希望使用SqlFunctions.DateDiff

Tickets.Where(t => 
      SqlFunctions.DateDiff("second", t.Date, myTicket.Date) < 120));

答案 1 :(得分:4)

你也可以使用它;

var result = db.Tickets.Where(t => 
       SqlMethods.DateDiffSecond(myTicket.Date ,  t.Date) < 120);

答案 2 :(得分:2)

Entity Framework中不支持使用DateTime进行算术运算。您必须使用其中一个SqlFunctions。所以,对于你的陈述,例如:

Tickets.Where(t => 
      SqlFunctions.DateDiff("second", t.Date, myTicket.Date) < 120));