2016-04-22 40 views
0

我知道如何進行分頁,但它不符合我的要求,因爲每當我需要下一個分頁結果時,分頁的基礎查詢都會自行更新。所以我正在尋找簡單的解決方案來高效地迭代逐個整個查詢結果。請看下面的例子。如何迭代大型查詢

var urls = db.Websites.Select(s => s.Website) 
      .Except(db.OldWebsites.Select(s => s.Website)); 

foreach (var url in urls) 
{ 
    //process items 
} 

我只是想知道,解決方案是真正有效的迭代整個結果與否。我並不確定解決方案是逐行加載行而不將所有結果加載到內存中。

有人可以驗證這個或建議更好的解決方案嗎?

回答

0

是實體框架流結果,而不是默認的緩衝。調用AsStreaming方法列出了警示爲:「查詢現在默認流,除非重試ExecutionStrategy使用

foreach (var item in db.Websites.AsStreaming()) { } 

只是需要小心的是的DbContext並不適用於迭代結果引用匿名類型或原始。結果已經無法跟蹤,因此需要調用AsNoTracking for Entity結果,如

db.Websites.AsNoTracking()