找到计数的优化方法是什么?LINQ或foreach

本文关键字:是什么 LINQ foreach 方法 优化 | 更新日期: 2023-09-27 18:26:08

我有对象列表。我想查找列表中满足特定条件的项目数。我有两个选项LINQ或foreach循环。我可以编写一个LINQ查询来查找计数,也可以使用foreach迭代项并在condition上设置计数器。我想知道做这件事的最佳方式,无论我是使用foreach还是LINQ来查找计数。提前谢谢。

找到计数的优化方法是什么?LINQ或foreach

Linq的Count()方法是使用循环实现的,所以使用哪一个并不重要。显式循环可能会稍微快一点,但我认为差异不会大到足以引起注意。我会使用Count(predicate),因为它更可读。


编辑:我没有注意到你的问题中的EntityFramework标记,所以我假设它是Linq-to-Objects。如果您是针对数据库进行查询,那么使用Count(predicate)肯定会更快;使用循环意味着从数据库中获取每条记录,以便在代码中进行检查,而对Count的调用将转换为在数据库上执行的SQL查询。

既然你提到了实体框架:可能是Linq,因为它会尽可能在数据库中执行计数。再次假设您的筛选条件可以转换为SQL

如果您首先从DB中检索所有实体,然后应用过滤器,这可能会导致大量开销。