【发布时间】:2020-11-07 09:53:12
【问题描述】:
这只是我需要的信息。
当我使用 C# 遍历列表执行 foreach 循环时,如下所示:
foreach (var record in DbContext.UserRecords.Where(record => record.UserId == user.Id &&
record.Date.Date == startDate.AddDays(i).Date)
.ToList())
{
totHours += record.Hours;
}
每个周期到底发生了什么?查询是否再次发生,所以我对我想要的列表中的每个项目都有 N 次查询,或者它只是第一次执行,然后循环保留数据的临时副本? 我正在尝试优化 ASP.Net 项目中的时间,我想知道是否有更清洁/更快的方法来迭代这些长数据流...
非常感谢!
【问题讨论】:
-
如果你想优化一个项目,你应该通过分析器运行它而不是猜测!
-
另外,如果您只是对小时求和,您可以让查询只返回小时的总和。
totHours += DbContext.UserRecords.Where(/* conditions */).Sum(record => record.Hours); -
@itsme86 我喜欢这种超级精简的方法!谢谢你的主意!
标签: c# sql sqlite foreach asp.net-core-3.1