4

根据where子句在 linq 表达式中的位置,性能是否存在差异?

看看下面的代码:

dbContext.AnEntity.Include("AnotherEntity").Where(e => e.ID == id).ToList();

dbContext.AnEntity.Where(e => e.ID == id).Include("AnotherEntity").ToList();

这两个表达式的执行计划是相同还是不同?

4

1 回答 1

1

理论上,没有。实际上,您将需要逐个测试,并在逐个提供者的基础上进行测试。对于一个相关(但略有不同)的示例,在 L2S 中很长一段时间,.Where(predicate).FirstOrDefault()并且.FirstOrDefault(predicate)(具有相同的语义)没有相同的行为(特别是与身份映射快捷方式有关)。

希望它会是相同的,特别是因为.Include(扩展结果集)与(谓词)相比,它属于一个单独的类别,.Where但是:验证的唯一方法是测试它并比较生成的 SQL 和性能。

于 2012-08-06T08:53:45.617 回答