结合类型为T的EF LINQ表达式,bool

时间:2016-06-06 16:05:02

标签: c# entity-framework linq lambda expression

此问题与Combining two expressions (Expression<Func<T, bool>>)不同,因为该答案不适用于Entity Framework。

它是Establish a link between two lists in linq to entities where clause的副本 在那个问题中解释了如何为EF解决这个问题。

我正在尝试将两个LINQ表达式合并为一个。 这是我的功能:

    public IQueryable<T> CombineExpressions(Expression<Func<T, bool>> filter1, Expression<Func<T, bool>> filter2)
    {
        var newFilter = filter1 + filter2 /* TODO insert magic here */;
        return GetItems(newFilter);
    }

如果已经发布并回答,我道歉。我不能理解,如果你能指出我正确的解决方案,我将非常感激。

我尝试了以下事项:

Combining two expressions (Expression<Func<T, bool>>)(简单而复杂的解决方案) 我得到的错误是:LINQ表达式节点类型&#39;调用&#39; LINQ to Entities不支持。

我也尝试了谓词构建器:http://www.albahari.com/nutshell/predicatebuilder.aspx

这个: Combine two Linq lambda expressions

当我尝试遵循MS LINQ实体方式时:

https://blogs.msdn.microsoft.com/meek/2008/05/02/linq-to-entities-combining-predicates/

        Expression<Func<T, bool>> newFilter = Expression.Lambda<Func<T, bool>>(
        Expression.And(filter.Body, filter2.Body), filter.Parameters.Single());

我收到此错误:

参数&#39; i&#39;未绑定在指定的LINQ to Entities查询表达式中。 注意:我的第一个表达式是i =&gt;之一i.property == value,第二个表达式是由用户提供的表达式,因此我无法控制它。

什么都行不通,我不知道该怎么做。 如果之前得到了回答,请给我一些关于如何将其应用到我的情况的线索。谢谢!

0 个答案:

没有答案