Tôi cố gắng chọn bản ghi trong cơ sở dữ liệu trong 60 ngày 30 ngày 20 ngày differents trong ngày hiện tại.LINQ to Entities không nhận ra phương thức 'System.TimeSpan Subtract (System.DateTime)' phương pháp
Vui lòng xem truy vấn này ở bên dưới.
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();
Nhưng đã xảy ra lỗi khi truy vấn này.
Tôi không biết gì cả. Hãy giúp tôi.
bạn tính toán bên ngoài tuyên bố lambda. Khi nó ở bên trong lambda như bạn đang sử dụng nó, bạn đang cố gắng để EntityFramework làm phép tính khi nó không có nghĩa là để làm như vậy. – Middas
Vì vậy LINQ to SQL sẽ không "dịch" một biểu thức như 'product.EventDate.Subtract (DateTime.Now)'. Trong C#, một ký hiệu thay thế là 'product.EventDate - DateTime.Now', trong đó người ta sử dụng [quá tải của toán tử trừ (' -')] (http://msdn.microsoft.com/en-us/library/1905yhe2. aspx). Có ai biết nếu _that_ sẽ làm việc với LINQ to SQL?Sau khi tất cả, trừ ngày tháng cũng có thể có trong các phương ngữ SQL. –
@JeppeStigNielsen Đối với EF, bạn có thể sử dụng EntityFunctions.DiffDays – scartag