我想通过变量 y 来声明和重用带有过滤器的表达式。在一种方法中,我有如下内容:
Expression<Func<Item, int, bool>> exFilter = (x, y) => x.Item.Id == y;
此外,在我尝试使用声明表达式 (exFilter) 的代码中
return context.Item.Select(x => new { data = exFilter.Where(exFilter))
问:如何将参数传递给 exFilter?我想按列表 (x) 中的每个项目进行选择过滤。
这只是我想弄清楚的示例。问题和查询要大得多,也复杂得多。
最佳答案
您可以使用 LinqKit重用您拥有的表达式。这是一个例子:
var result =
context.Item //The DbSet
.AsExpandable() //This method is defined in LinqKit and allows for expression expansion
.Where(x => exFilter.Invoke(x, 2)) //LinqKit will know how to translate this into an expression
.ToList();
我在这里以值 2 为例。
关于c# - 将参数传递给 Entity Framework 中的可重用表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35814953/