Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server EF6不将Func lambda识别为Where的筛选器_Sql Server_Entity Framework 6 - Fatal编程技术网

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;