我正在尝试使用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();
}
}
我收到上述错误。什么失败了?
答案 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>>
。