数百万個のオブジェクトという非常に大きな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