Я пытаюсь выбрать записи в базе данных за 60 дней 30 дней 20 дней в текущей дате.LINQ to Entities не распознает метод «System.TimeSpan Subtract (System.DateTime)»
См. Этот запрос ниже.
var uploads = (
from files in _fileuploadRepository.Table
join product in _productRepository.Table on files.Event equals product.Id
where
(
product.EventDate != null &&
(product.EventDate.Subtract(DateTime.Now).Days <= 60 && product.EventDate.Subtract(DateTime.Now).Days >= 60) ||
(product.EventDate.Subtract(DateTime.Now).Days <= 30 && product.EventDate.Subtract(DateTime.Now).Days >= 30) ||
(product.EventDate.Subtract(DateTime.Now).Days <= 20 && product.EventDate.Subtract(DateTime.Now).Days >= 20))
&&
files.IsSkiped == false
select files;
).ToList();
Однако возникла ошибка в этом запросе.
Я невежественный. Пожалуйста помоги.
ли вам расчеты за пределами заявления лямбда. Когда он находится внутри лямбда, как вы его используете, вы пытаетесь сделать EntityFramework вычисления, когда он не предназначен для этого. – Middas
Так что LINQ to SQL не будет «переводить» выражение типа 'product.EventDate.Subtract (DateTime.Now)'. В C# альтернативным обозначением является 'product.EventDate - DateTime.Now', где используется [перегрузка оператора минус (' -')] (http://msdn.microsoft.com/en-us/library/1905yhe2. ASPX). Кто-нибудь знает, будет ли _that_ работать с LINQ to SQL?В конце концов, вычитание дат также возможно в диалектах SQL. –
@JeppeStigNielsen Для EF вы можете использовать EntityFunctions.DiffDays – scartag