数百万個のオブジェクトという非常に大きなIEnumerable
コレクションがある場合、一度にすべてをロードするには大きすぎます。コレクションは yield メソッドを介して返されます。
private static IEnumerable<MyData> ExtractModelsFromDb()
{
using (DbDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Load MyData
yield return MyData;
}
reader.Close();
}
}
このデータは、単一のForeach
ループで消費されます。
public void RunStuff()
{
var myCollection = ExtractModelsFromDb();
foreach (var data in myCollection)
{
//DO STUFF
}
}
IEnumerable
の下のコレクションが一度に 1 つのオブジェクトをロードしていることはわかっていますが、オブジェクトは で使用されると削除されますか、それともが完了ForEach
するまでコレクションに残りますか。ForEach