2013-07-05 10 views
0

У меня есть запрос, который возвращает true или false в зависимости от двух условий. Одним из условий является проверка того, меньше ли время (сегодняшнее время) из БД или 5 минут (т.е. 300 секунд). Я попытался определить переменный формат DateTime следующегоКак вычесть EntityFunctions.TruncateTime из пользовательского времени

System.DateTime customDate= new System.DateTime(0000, 00, 00, 0, 00, 300); 

здесь запрос

bool result = (from a in this.db.Samples 
       where a.Ping == "Online" 
       && 
       (EntityFunctions.TruncateTime(a.date) - DateTime.Now) <= customDate     
       select a).Any(); 

но я следующая ошибку

Оператор «< =» не может быть применен к операнды типа «System.TimeSpan?» и System.DateTime '

любезно помощь.

ответ

1

Вычитание одного DateTime из других результатов в TimeSpan. EntityFramework не поддерживает арифметику DateTime/TimeSpan, поэтому вам придется использовать функцию сущности DiffMinutes. (Full list of entity functions).

Try:

bool result = (from a in this.db.Samples 
       where a.Ping == "Online" 
       && 
       EntityFunctions.DiffMinutes(EntityFunctions.TruncateTime(a.date), DateTime.Now) <= 5 
       select a).Any(); 
+0

Спасибо за ваше обновление, но у меня есть следующее сообщение об ошибке - «аргументы DbArithmeticExpression должны иметь числовой общий тип». – user1221765

+0

Я отредактировал ответ, чтобы отразить необходимость в функциях Entity для любой арифметики DateTime/TimeSpan. Вы можете использовать функцию DiffMinutes Entity, чтобы получить разницу в минутах между датой начала и окончания. –

+0

спасибо .. что такое 5 здесь ?? это в минутах ?? – user1221765

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