【问题标题】:Comparing performance of generated queries for Any() vs Count() in Entity Framework 4.1比较 Entity Framework 4.1 中 Any() 与 Count() 生成查询的性能
【发布时间】:2023-03-22 09:26:01
【问题描述】:

我正在使用 Entity Framework 4.1 和 C#。

哪一个最适合发挥最佳性能?

如果是这样 - 为什么? (任何其他阅读的链接)?

bool isBoarding = invoice.Allocations.Where(a => a.Service.Key == "boarding").Count() > 0;

bool isBoarding = invoice.Allocations.Any(a => a.Service.Key == "boarding");

【问题讨论】:

  • Any 更易读,通常更高效,因为它可以使用EXISTS。但在 Linq-To-Entities 中,您应该查看生成的 sql。 Sometimes Count 似乎更快。对于 Linq-To-Objects always 使用 Any
  • 感谢您提供有用的链接。

标签: c# performance tsql linq-to-entities entity-framework-4.1


【解决方案1】:

Count 我相信会导致所有记录被迭代,而 Any 会在它找到的第一个记录处停止。

编辑:刚刚发现一篇关于计数与任何take a look here 的优秀帖子

【讨论】:

  • 您链接的帖子是关于 Ienumerable 但在回复中它谈论 Iqueriable 和 EF
  • 确实,一般来说,当使用 linq 到对象时 Any 几乎总是更快,但是当使用 Linq 到实体 Count() > 0 时可能会更快,这纯粹是因为 EF 生成的经常令人费解的 SQL .
猜你喜欢
  • 2013-07-27
  • 1970-01-01
  • 2012-05-18
  • 1970-01-01
  • 2011-11-11
  • 2020-05-07
  • 2020-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多