Linq to Entities不识别方法

时间:2023-03-10 04:18:07
Linq to Entities不识别方法
    db.UserValidates.Include(a => a.User).Where(uv => u.UserValidates.Contains(uv, c)).ToList();

执行时出现:Linq to Entities不识别方法

Linq to Entities不识别方法

解决方式可以使用lambda表达式树

 Expression<Func<UserValidate, bool>> express = uv => u.UserValidates.Contains(uv, c);
db.UserValidates.Include(a => a.User).Where(express.Compile()).ToList();

失败的原因是对应部分的代码无法转成sql语句执行,使用lambda表达式树可以的原因是对应的表达式树没有被翻译成sql语句,而是在获取数据后在内存中执行的

Linq to Entities不识别方法

其中"1"处得代码转换成的sql如下

Linq to Entities不识别方法

"2"处得代码转换成的sql如下

Linq to Entities不识别方法