加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 17:39:16 所属栏目:百科 来源:网络整理
导读:我通过一个带有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 d
我通过一个带有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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读