这个问题是关系到a previous question of mine如何在使用IEnumerable <T>和Linq-To-Sql时防止内存溢出?
这是我当前的代码
IEnumerable<Shape> Get()
{
while(//get implementation
yield return new Shape(//...
}
void Insert()
{
var actual = Get();
using (var db = new DataClassesDataContext())
{
db.Shapes.InsertAllOnSubmit(actual);
db.SubmitChanges();
}
}
我得到一个内存溢出,因为IEnumerable的太大。我如何防止它?
我如何获得5个组中的所有元素? – 2009-06-23 19:03:46
我了解到InsertBatchOnSubmit将是一个InsertAllOnSubmit,其元素较少 – 2009-06-23 19:08:39
Earwicker的链接有一个很好的例子。不过,我不确定这会对你有帮助,因为你正在执行延期执行。您可能必须在循环外有一个List和batchSize = 5。从你的枚举器添加项目,一旦计数达到batchSize,插入,然后清除以前的批处理。那是你问的吗? –
2009-06-23 19:17:54