使用 Linq 创建不超过 30 天的项目列表
Creating list of items that are not older than 30 days with 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();
List<SalesOrder> so = db.SalesOrders
.Where(x => x.siteID == s.ID)
.Where(x => x.DateCreated > DateTime.Now.AddDays(-30)).ToList();
}
}
但目前这个 returns 是
的错误
'LINQ to Entities does not recognize the method 'System.DateTime AddDays(Double)' method, and this method cannot be translated into a store expression.'
这是什么原因?
将其声明为 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 表达式时会遇到问题。
LINQ to Entities does not recognize the method
我有一个看起来像这样的方法
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();
}
}
但目前这个 returns 是
的错误'LINQ to Entities does not recognize the method 'System.DateTime AddDays(Double)' method, and this method cannot be translated into a store expression.'
这是什么原因?
将其声明为 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 表达式时会遇到问题。
LINQ to Entities does not recognize the method