我在一个类上有一个属性
Expression<Func<Product, int>> predicate;
将在整个应用程序中分配给不同的表达式。
在名为 GetProducts
的方法中,我想使用 Entity Framework 使用此谓词从数据库中检索产品。然后,我将有一个名为 myInt
的变量,我想将其用作 int
参数,然后将为其分配一个值。
所以我尝试了
dbContext.Products.Where(p => predicate(p, myInt))
但是我得到了不可调用的成员“谓词”不能像方法一样使用。
错误。
看起来我需要进行一些表达式树操作,以创建一个新的表达式树,其中包含 myInt
。我怎样才能做到这一点?
感谢您的帮助。
最佳答案
您将 predicate
定义为 Type
,但您将其用作方法。
您可以通过以下方式定义谓词:
private bool predicate(Product product, int myInt)
{
//put your logic here
return true;
}
您还可以使用 lambda 表达式:
product => product.SomeValue > 5
编辑:
Expression<Func<Product, int>> predicate = (product,val) => product.SomeValue > val;
var filtered = dbContext.Products.Where(predicate);
- 命名参数时避免使用类型(即不要命名整数
MyInt
)
关于c# - 创建调用表达式树的表达式树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19346936/