gpt4 book ai didi

c# - 创建调用表达式树的表达式树

转载 作者:行者123 更新时间:2023-11-30 22:13:09 25 4
gpt4 key购买 nike

我有一个类的属性

Expression<Func<Product, int>> predicate;

将在整个应用程序中分配给不同的表达式。

在名为 GetProducts 的方法中,我想使用 Entity Framework 从数据库中检索产品,使用此谓词。然后我将有一个名为 myInt 的变量,我想将其用作 int 参数,然后为其分配一个值。

所以我试过了

dbContext.Products.Where(p => predicate(p, myInt))

但是我得到了 Non-invocable member 'predicate' cannot be used like a method. 错误。

看起来我需要做一些表达式树操作,以创建一个新的表达式树,其中包含 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com