Подтвердить что ты не робот

Как использовать 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

4b9b3361

Ответ 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();