db.UserValidates.Include(a => a.User).Where(uv => u.UserValidates.Contains(uv, c)).ToList();
执行时出现: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语句,而是在获取数据后在内存中执行的
其中"1"处得代码转换成的sql如下
"2"处得代码转换成的sql如下