LINQ to Entities不支持LINQ表达式节点类型“Lambda”

时间:2013-12-23 13:13:55

标签: c# linq entity-framework

我正在尝试使用Expression并传递给查询。但我有错误 - LINQ to Entities不支持LINQ表达式节点类型'Lambda'。我也使用linqkit.dll和AsExpandable(),但是有相同的错误。

public List<Correct> GetCorrects(Expression<Func<Correct, bool?>> predicate)
{
    using (SystemsEntities context = new SystemsEntities())
    {
        var result = context.Corrects.Where(x => predicate == null);
        return result.ToList();
    }
}

我收到上述错误。什么失败了?

1 个答案:

答案 0 :(得分:14)

使用此:

var result = context.Corrects.Where(predicate);

而不是:

var result = context.Corrects.Where(x => predicate == null);

Where期望Expression<Func<T, bool>>类型的参数,但您尝试传递Expression<Func<T, Expression<...>>。这是有效的编译时构造,但在运行时LINQ提供程序失败,当它尝试将predicate转换为SQL时。

另请注意,您应将Expression<Func<Correct, bool?>>更改为Expression<Func<Correct, bool>>