c# - 将参数传递给 Entity Framework 中的可重用表达式

标签 c# entity-framework linq

我想通过变量 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/

相关文章:

c# - MVC 3 逆向工程数据库然后切换到代码优先

Linq跳过,接

c# - 合并两个数据库表的 LINQ 代码?

c# - Windows 8 XAMl C#向文本框添加水印?

entity-framework - 我无法在实体数据模型设计器中打开 .EDMX 文件

c# - 使用自定义颜色修改自定义属性

c# - 包括一个集合,然后是下一级的集合

c# - 在 ASP.NET MVC 中跟踪 LINQ TO SQL 生成的查询

c# - Pagekey 在 layoutawarepage 的 OnNavigatedFrom 中变为 null

c# - 使用 Json.Net 反序列化,将子对象反序列化为包含 json 的字符串/类似字符串?