Как использовать DATEADD над столбцом в LINQ - DateAdd не распознается LINQ
Я пытаюсь аннулировать просьбы о дружбе, которые были отреагированы менее 30 дней назад.
var requestIgnored = context.Request
.Where(c => c.IdRequest == result.IdRequest
&& c.IdRequestTypes == 1
&& c.Accepted == false
&& DateTime.Now <= (((DateTime)c.DateResponse).AddDays(30)))
.SingleOrDefault();
c.DateResponse
имеет тип DateTime?
. Ошибка, которую я получаю:
LINQ не распознает команду .AddDays
Ответы
Ответ 1
Изменить: Если вы используете EntityFramework >= 6.0, используйте DbFunctions.AddDays
. Для более старых версий Entity Framework используйте EntityFunctions.AddDays
:
var requestIgnored = context.Request
.Where(c => c.IdRequest == result.IdRequest
&& c.IdRequestTypes == 1
&& c.Accepted == false
&& DateTime.Now <= DbFunctions.AddDays(c.DateResponse, 30))
.SingleOrDefault();
Ответ 2
Вы можете попробовать следующее:
var thirtyDaysAgo = DateTime.Now.AddDays(-30);
var requestIgnored = context.Request
.Where(c =>
c.IdRequest == result.IdRequest &&
c.IdRequestTypes == 1 &&
c.Accepted == false &&
c.DateResponse.HasValue &&
thirtyDaysAgo <= c.DateResponse.Value)
.SingleOrDefault();