LINQ to Entities Where子句位置异常,请求技术协助解惑
LINQ to Entities Where子句位置异常,求同行解惑
各位好,我最近在使用LINQ to Entities时碰到了一个特别奇怪的问题,感觉自己对它的工作原理理解有偏差,导致Where子句的位置似乎引发了异常结果,实在搞不懂,来请教大家!
麻烦各位在本地用LinqPad运行下面的代码,看看能不能复现同样的问题:
代码示例1:使用导航属性的查询
var result = (from ge in group_execution where ge.automation_sequences.project.client_id == 1 && ge.parent_group_exec_id != null select new { ge.id, ge.parent_group_exec_id, ge.automation_sequences.project.client_id }); result.Dump();
代码示例2:尝试用显式连接查询(未完成但已能复现问题)
var result = (from ge in group_execution join aseq in automation_sequences on ge.automation_sequence_id equals aseq.id join p in projects on aseq.project_id equals p.id where p.client_id == 1 && ge.parent_group_exec_id != null select new { ge.id, ge.parent_group_exec_id, p.client_id });
我本来以为两种查询方式应该得到一致的正确结果,但实际运行后都出现了不符合预期的错误输出。我怀疑是自己没搞清楚LINQ to Entities把LINQ查询转换成SQL时,Where子句的执行顺序或者位置逻辑,才导致了这个问题。
有没有朋友碰到过类似的情况?或者能帮忙分析下可能的原因,给点排查的思路?万分感谢!
内容的提问来源于stack exchange,提问作者spyder1329
相关产品推荐
相关产品推荐

