簡體   English   中英

c# foreach 循環迭代與查詢執行時間的列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM