我通过一个带有foreach / IQueryable和LINQ to sql的小型(〜10GB)表来迭代.
看起来像这样:
看起来像这样:
using (var conn = new DbEntities() { CommandTimeout = 600*100}) { var dtable = conn.DailyResults.Where(dr => dr.DailyTransactionTypeID == 1); foreach (var dailyResult in dtable) { //Math here,results stored in-memory,but this table is very small. //At the very least compared to stuff I already have in memory. :) } }
Visual Studio调试器在foreach循环的基础上短暂地抛出一个超出内存的异常.我假设dtable的行没有被刷新.该怎么办?
解决方法
IQueryable< DailyResult>在foreach循环的任何迭代之前,可以尝试将枚举的整个查询结果加载到内存中.它在foreach循环的迭代期间不加载一行.如果您想要这种行为,请使用
DataReader.