当前位置 : 主页 > 网络安全 > 测试自动化 >

.net – 如何构造linq表达式的性能有何不同?

来源:互联网 收集:自由互联 发布时间:2021-06-22
根据where子句在 linq表达式中的位置,性能是否存在差异? 看看下面的代码: dbContext.AnEntity.Include("AnotherEntity").Where(e = e.ID == id).ToList();dbContext.AnEntity.Where(e = e.ID == id).Include("AnotherEntity")
根据where子句在 linq表达式中的位置,性能是否存在差异?

看看下面的代码:

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

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

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

从理论上讲,没有.实际上,您需要根据具体情况和提供商提供商进行测试.对于相关(但略有不同)的例子,在L2S中长期存在,.Where(谓词).FirstOrDefault()和.FirstOrDefault(谓词)(具有相同的语义)没有相同的行为(特别是相关的)身份映射快捷方式).

我希望它会是一样的,特别是因为.Include(扩展结果集)是一个单独的类别比.Where(一个谓词)但是:验证的唯一方法是测试它并比较生成的SQL和表现.

网友评论