c# – 通过IQueryable与foreach迭代导致内存不足异常

前端之家收集整理的这篇文章主要介绍了c# – 通过IQueryable与foreach迭代导致内存不足异常前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我通过一个带有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.

猜你在找的C#相关文章