一共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 }
看看你这个有多长:sb.AppendFormat("{0}格式不正确|", item);
你把 sb.AppendFormat("{0}格式不正确|", item); 都注释掉再测试下。
貌似你的flag一旦为false后之后都没有改变过值,同样sb也是一直在Append从来没清空过。。。
10万条:sb=“xxxx"*1+“xxxx"*2+“xxxx"*3...+“xxxx"*99999+“xxxx"*100000
内存溢出
在内存里遍历10W条数据,楼主V5 啊