我有对象列表。我想在列表中找到满足特定条件的项目数。我有两个选项LINQ或foreach循环。我可以编写一个LINQ查询来查找计数,或者可以使用foreach迭代项目并在条件上设置计数器。无论我使用foreach还是LINQ来查找计数,我想知道这样做的优化方法。提前谢谢。
答案 0 :(得分:2)
Linq的Count()
方法是使用循环实现的,因此使用它并不重要。一个明确的循环可能会稍微快一点,但我不认为差异会大到足以引起注意。我会使用Count(predicate)
,因为它更具可读性。
Count(predicate)
肯定会更快;使用循环意味着您从数据库中获取每个记录以在代码中检查它,而对Count
的调用将转换为要在数据库上执行的SQL查询。
答案 1 :(得分:2)
好吧,既然你提到了实体框架:可能是Linq,因为它会在可能的情况下在数据库中执行计数。再次假设您的过滤条件可以转换为SQL
如果您要首先从数据库检索所有实体,然后应用过滤器,这可能会导致大量开销。