[英]c# foreach loop iterations with list from query execution time
這只是我需要的信息。
當我使用 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 項目中的時間,我想知道是否有更干凈/更快的方法來迭代這些長數據流......
非常感謝!
不,您在執行查詢並將數據加載到 memory 的IQueryable
上調用ToList()
。
然后在內存中的 object 上執行每次迭代。
即使沒有ToList()
,查詢也會執行一次,並且數據會從數據庫中流出。
雖然 memory 效率更高,但它會在循環期間鎖定基礎表,因此您需要對這種方法保持謹慎。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.