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

时间:2014-10-10 14:12:19

标签: c# entity-framework

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

2 个答案:

答案 0 :(得分:2)

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


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

答案 1 :(得分:2)

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

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