Sql server EF6不将Func lambda识别为Where的筛选器
我拥有以下实体:Sql server EF6不将Func lambda识别为Where的筛选器,sql-server,entity-framework-6,Sql Server,Entity Framework 6,我拥有以下实体: [表(“客户”,Schema=“dbo”)] 公共类客户 { 公共int Id{get;set;} 公共字符串名称{get;set;} } [表(“付款”,Schema=“dbo”)] 公共类支付 { public int PaymentId{get;set;} public int CustomerId{get;set;} 公共日期时间段{get;set;} 公共整数价格{get;set;} [外键(“客户ID”)] 公共客户客户{get;set;} } 现在我想按期间和价
[表(“客户”,Schema=“dbo”)]
公共类客户
{
公共int Id{get;set;}
公共字符串名称{get;set;}
}
[表(“付款”,Schema=“dbo”)]
公共类支付
{
public int PaymentId{get;set;}
public int CustomerId{get;set;}
公共日期时间段{get;set;}
公共整数价格{get;set;}
[外键(“客户ID”)]
公共客户客户{get;set;}
}
现在我想按期间和价格过滤付款表。每个谓词必须在自己的Where
方法中。因此,我得到以下信息:
int-price=200;
var期间=新日期时间(2020年10月3日);
使用var db=newtestcontext();
//选项1:匿名lambda
var payments1=分贝付款
.其中(p=>p.期间<期间)
其中(p=>p.价格p.期间<期间;
var payments2=db.Payments.Where(func).Where(p=>p.Price您需要使用表达式,而不仅仅是func,以便EF可以计算出属性的名称等
尝试:
Expression func=p=>p.Period
Expression不仅仅是Func.EF需要一个表达式来计算名称等。Func对它来说是不透明的,因此将在整个结果集被使用后运行hanks!现在一切都好了!完全忘记这一刻。
Expression<Func<Payment, bool>> func = p => p.Period < period;