Mahesh@Dev Ответов: 1

Я пытаюсь получить запись за 10 дней до этого по этому запросу linq.


Additional information: LINQ to Entities does not recognize the method 'System.DateTime AddDays(Double)' method, and this method cannot be translated into a store expression.


Что я уже пробовал:

DateTime dtNow = DateTime.Now;
var lst = db.SMSHistory.Where(s => s.UserID == IUserID && EntityFunctions.TruncateTime(s.SendDate) ==  EntityFunctions.TruncateTime(dtNow.Date.AddDays(-10))).Select(d=>d).ToList()

F-ES Sitecore

Попробовать и оценить выражение вне аттракцион LINQ

DtNow датавремя = Датавремя.Сейчас;
DtTenDays датавремя = Датавремя.Сейчас.AddDays(10);
ВАР ЛСТ = дБ.SMSHistory.Где(S =&ГТ; с. Идентификатор пользователя == IUserID &амп;&амп; EntityFunctions.TruncateTime(С. SendDate) == EntityFunctions.TruncateTime (dtTenDays)).Выберите (d=> d).Список()

1 Ответов

Рейтинг:
0

Maciej Los

Сообщение об ошибке совершенно ясно. Как говорится в сообщении Entity Framework не может преобразовать DateTime.AddDays(n) в SQL-выражение. Вы должны использовать Функции SqlFunctions[^], особенно: SqlFunctions.Способ Функция Dateadd (Строки, Допускающий Значение Null(Двуспальная), Допускающий Значение Null(Значение Типа Datetime)) (Системы.Данных.Объекты.Поставщики sqlclient)[^]. Или... вы можете использовать метод, предоставленный Ф-Эс компания[^] в комментарии к вопросу.

Проверьте мой прошлый ответ на подобный вопрос: LINQ to Entities не распознает систему метода.DateTime ToDateTime(System.Object)' метод, и этот метод не может быть переведен в выражение хранилища.[^]
Для получения более подробной информации, пожалуйста, смотрите:
c# - метод не может быть переведен в выражение хранилища-переполнение стека[^]