【发布时间】:2013-07-26 02:04:47
【问题描述】:
如果我有一个非常大的 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完成了。
【问题讨论】:
标签: c# performance ienumerable