如果我有一个非常大的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
一次加载一个对象,但是一旦在 中使用这些对象就会被删除,ForEach
或者它们是否保留在集合中直到ForEach
完成。