日期:2014-05-18 浏览次数:20893 次
List<Product> table = new List<Product>(); class Product { public string name; public decimal price; public int count; private Product() { } public Product(string name, decimal price, int count) { this.name = name; this.price = price; this.count = count; } }
------解决方案--------------------
数据量那么大,List<>的膨胀速度确实会很惊人。不行就自己简单地分一下页?
比如每读取5K行就汇总一次,把汇总结果存入一个中间文件,比如temp1.txt。然后再读下一个5K行,依此循环。
最后再对temp1.txt、temp2.txt这些中间文件进行二次汇总。
这么大数据量,不用数据库,真的很麻烦。
------解决方案--------------------
"最重要的是List<Product> table = new List<Product>();装不下合并的结果,没处理完就显示内存溢出了"
LZ,分两个步骤:
1、用HashTable,哈希表的空间伸缩范围要大。
2、遍历文本同时,进行计算处理,不能先装,在合并,这样消耗内存太大了!
如果哈希表都不能解决你的问题,建议先把文本导入到数据库中,在进行处理,毕竟数据库伸缩的空间比内存要大多了。。。。