2013-06-19 69 views
-4

可以说事件发生在11点。我希望只有在事件发生在事件启动前1小时到事件结束之间时才能显示。谢谢你的帮助。在特定时间间隔内获取数据

from x in _context.Events 
join a in _context.Addresses on x.EventAddressID equals a.ID 
let aboutToStart = x.EventStartTime.AddHours(-1) 
let currentTime = DateTime.Now 
where x.EventStartTime >= aboutToStart && x.EventEndtime >= currentTime 
+0

那么您的问题是什么?您的查询是否有效?如果不是,它对于一些样本输入有什么作用,它应该返回什么?它不会编译,还是错误,或什么? – Servy

+0

查询需要多小心?例如,您是否必须考虑夏令时?在添加/减少时间之前,您可能需要转换为UTC – Alan

+0

对不起,我没有提供,但没有它没有返回正确的信息。我认为我的where子句关闭 – user516883

回答

1

你不能用.AddHours(-1)呼叫服务器上创建新DateTime对象。相反,您应该使用EntityFunctions.AddHours方法来计算服务器上的日期时间:

var currentTime = DateTime.Now; 
var query = from x in _context.Events 
      join a in _context.Addresses on x.EventAddressID equals a.ID 
      let aboutToStart = EntityFunctions.AddHours(x.EventStartTime, -1) 
      where x.EventStartTime >= aboutToStart && 
        x.EventEndtime >= currentTime; 
+0

从来没有使用过这个,你能不能提供一个例子,我的子句会得到我需要的结果吗? – user516883

+0

@ user516883肯定,用示例更新 –

+0

@ user516883这是否解决了您的问题? –

相关问题