2013-06-19 3 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

Вы не можете создавать новые DateTime объектов на сервере с .AddHours(-1) вызова. Вместо этого вы должны использовать метод 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 ли это решает ваши проблемы? –

Смежные вопросы