【发布时间】:2013-02-22 05:53:55
【问题描述】:
我尝试在当前日期选择 60 天 30 天 20 天不同的数据库中的记录。
请在下面查看此查询。
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 语句之外进行计算。当它像您使用它一样位于 lambda 内部时,您正在尝试让 EntityFramework 在不打算这样做时进行计算。
-
所以 LINQ to SQL 不会“翻译”像
product.EventDate.Subtract(DateTime.Now)这样的表达式。在 C# 中,另一种表示法是product.EventDate - DateTime.Now,其中使用 an overload of the minus (-) operator。有谁知道 that 是否可以与 LINQ to SQL 一起使用?毕竟在 SQL 方言中,日期减法也是可以的。 -
@JeppeStigNielsen 对于 EF,您可以使用 EntityFunctions.DiffDays
标签: c# linq entity-framework linq-to-sql linq-to-entities