我有一个看起来像这样的方法
public class Site
{
public virtual ICollection<SalesOrder> soDetails { get; private set; }
public int? IncomingOSI(Site s)
{
PIC_Program_1_0Context db = new PIC_Program_1_0Context();
List<SalesOrder> so = db.SalesOrders
.Where(x => x.siteID == s.ID)
.Where(x => x.DateCreated > DateTime.Now.AddDays(-30)).ToList();
}
}
但是目前返回错误
'LINQ to Entities无法识别方法'System.DateTime AddDays(Double)',并且该方法无法转换为商店表达式。'
这是什么原因?
将其声明为linq表达式之外的变量。]>
public class Site { public virtual ICollection<SalesOrder> soDetails { get; private set; } public int? IncomingOSI(Site s) { PIC_Program_1_0Context db = new PIC_Program_1_0Context(); // declare it outside of the expression var less30days = DateTime.Now.AddDays(-30); List<SalesOrder> so = db.SalesOrders.Where(x => x.siteID == s.ID).Where(x => x.DateCreated > less30days).ToList(); } }
这里的答案说明了原因; Linq将无法运行其他C#代码,因为将其转换为sql表达式会遇到问题。