性能是否存在差异取决于 where
的位置子句位于 linq 表达式中?
看看下面的代码:
dbContext.AnEntity.Include("AnotherEntity").Where(e => e.ID == id).ToList();
dbContext.AnEntity.Where(e => e.ID == id).Include("AnotherEntity").ToList();
这两个表达式的执行计划相同还是不同?
最佳答案
理论上,没有。实际上,您需要逐案测试,并在逐个提供者的基础上进行测试。对于相关(但略有不同)的示例,在 L2S 中很长一段时间,.Where(predicate).FirstOrDefault()
和 .FirstOrDefault(predicate)
(具有相同语义)没有相同的行为(特别是与身份映射快捷方式有关)。
我希望它会是一样的,尤其是因为 .Include
(扩展结果集)与 .Where
属于一个单独的类别(谓词)但是:验证的唯一方法是测试它并比较生成的 SQL 和性能。
关于.net - linq 表达式的构造方式是否存在性能差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11825016/