首页新闻找找看学习计划

循环操作DataTable,出现OutOfMemoryException ,有没有好的解决方案

0
[已解决问题] 解决于 2012-08-17 13:18

一共13列,10万条数据,代码如下,运行10秒钟报OutOfMemoryException错误,谁能提供更好的解决方案?

 1   StringBuilder sb = new StringBuilder();
 2                 //0:出错消息,1:出错行
 3                 for (int i = 0; i < desTable.Rows.Count; i++)
 4                 {
 5 
 6                     DataRow row = messTable.NewRow();
 7                     foreach (string item in emptyValidStr)
 8                     {
 9                         if (string.IsNullOrEmpty(desTable.Rows[i][item].ToString()))
10                         {
11                             sb.AppendFormat("{0}不能为空|", item);
12                             flag = false;
13                             continue;
14                         }
15                         if (item == "CardCode")
16                         {
17                             if (!Regex.IsMatch(desTable.Rows[i][item].ToString(), CardCode))
18                             {
19                                 sb.AppendFormat("{0}格式不正确|", item);
20                             }
21                             flag = false;
22                             continue;
23                         }
24                         if (item == "VINCode")
25                         {
26                             if (!Regex.IsMatch(desTable.Rows[i][item].ToString(), VINCode))
27                             {
28                                sb.AppendFormat("{0}格式不正确|", item);
29                             }
30                             flag = false;
31                             continue;
32                         }
33                     }
34 
35                     if (flag == false)
36                     {
37                         row[0] = sb.ToString();
38                         row[1] = i + 1;
39                         errTable.Rows.Add(souTable.Rows[i].ItemArray);
40                         desTable.Rows.RemoveAt(i);
41                     }
42                 }
symphony2010的主页 symphony2010 | 初学一级 | 园豆:99
提问于:2012-08-17 09:21
< >
分享
最佳答案
0

看看你这个有多长:sb.AppendFormat("{0}格式不正确|", item);
你把 sb.AppendFormat("{0}格式不正确|", item); 都注释掉再测试下。

奖励园豆:5
Launcher | 高人七级 |园豆:45040 | 2012-08-17 10:41
其他回答(2)
0

貌似你的flag一旦为false后之后都没有改变过值,同样sb也是一直在Append从来没清空过。。。

10万条:sb=“xxxx"*1+“xxxx"*2+“xxxx"*3...+“xxxx"*99999+“xxxx"*100000

向往-SONG | 园豆:4853 (老鸟四级) | 2012-08-17 11:15
0

内存溢出

 

在内存里遍历10W条数据,楼主V5 啊

八戒的师傅 | 园豆:1472 (小虾三级) | 2012-08-17 11:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册