.net - linq 表达式的构造方式是否存在性能差异?

标签 .net performance linq

性能是否存在差异取决于 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/

相关文章:

c# - 将对象反序列化为自身

c# - 检测歌曲中的节拍

python - 如何检查列表列表中的所有元素是否都是字符串

python - numpy np.where 扫描数组一次以获取对应于 T/F 条件的两组索引

c# - .NET 2.0 (WinForms) 的组件应用程序 block - 有哪些新版本?

.net - 如何在windbg中找到我的ReaderWriterLock的锁持有者(读者)

java - 使用 { } 分割大块代码以提高代码可读性 - 好的做法?

c# - LINQ 查询带有绑定(bind)到列的子句

c# - 从 CRM 2011 中检索实体列表,每个实体及其所有相关实体

c# - 在 linq 的列表中列出 - 它是什么?