我嘗試在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();
但是這個查詢發生了錯誤。
我無言以對。請幫忙。
你的拉姆達聲明之外的計算。當它在你使用它的lambda內時,你試圖讓EntityFramework在不打算這樣做時進行計算。 – Middas 2013-03-07 06:14:01
所以LINQ to SQL不會「翻譯」像'product.EventDate.Subtract(DateTime.Now)'這樣的表達式。在C#中,替代符號是'product.EventDate - DateTime.Now',其中一個使用[負號('-')運算符](http://msdn.microsoft.com/zh-cn/library/1905yhe2)。 ASPX)。有誰知道_that_是否適用於LINQ to SQL?畢竟,在SQL方言中,日期的減法也是可能的。 – 2013-03-07 06:47:11
@JeppeStigNielsen對於EF,您可以使用EntityFunctions.DiffDays – scartag 2013-03-07 07:09:13