文件有19000行数据,一行有29个字符。
每行数据分名称,数量1,数量2
现在要比较名称相同则数量相加,得到一个统计后的表格。
用vs2005c#,系统是2003ppc,内存32M。
主频312。这个操作用了8S,正常么?其实正常是10+S,不过对有些都是0的就跳过了

解决方案 »

  1.   

    string strRecord = "",strLocal = "   0   0",Recordsub;
                    
                    bool bFind = false;
                    //DateTime start = System.DateTime.Now;                while ((strRecord = reader.ReadLine()) != null)
                    {
                        if ((i++ % i0) == 0 && progressBar.Value < 100)
                            progressBar.Value++;                    Recordsub = strRecord.Substring(11,10);
                        int j = 0;
                        for (; j < DataListMaxNum; j++)
                        {
                            if (MyDataList[j].ShopName == Recordsub)
                            {
                                if (strLocal != strRecord.Substring(21, 8))     //空的不加了
                                {
                                    MyDataList[j].Item0 += strtoi(strRecord.Substring(21, 4).Trim());
                                    MyDataList[j].Item1 += strtoi(strRecord.Substring(25, 4).Trim());
                                }
                                bFind = true;
                                break;
                            }
                        }
                        if (!bFind)
                        {
                            MyDataList[j].ShopName = strRecord.Substring(11, 10);                        MyDataList[j].Item0 = strtoi(strRecord.Substring(21, 4).Trim());
                            MyDataList[j].Item1 = strtoi(strRecord.Substring(25, 4).Trim());                        DataListMaxNum++;
                        }
                        else
                            bFind = false;
                    }
      

  2.   

    有效数据是三个部分,substring(11,10).substring(21,4),substring(25,4);
    后两个是数字(可能有' ');
    保存在自定义的某个地方,如果11,10那部分相同则后面两个数字分别相加。不同就新添加。
      

  3.   

    for (; j < DataListMaxNum; j++)
                        {
                            if (MyDataList[j].ShopName == Recordsub)
                            {
                                if (strLocal != strRecord.Substring(21, 8))     //空的不加了
                                {
                                    MyDataList[j].Item0 += strtoi(strRecord.Substring(21, 4).Trim());
                                    MyDataList[j].Item1 += strtoi(strRecord.Substring(25, 4).Trim());
                                }
                                bFind = true;
                                break;
                            }
                        }为什么不用查找呢,循环读取效率肯定没有查找高,还有建议先处理数据后显示结果
      

  4.   

    本来用arrlist那种东西,是查找的,可是觉得效率不过如此,就自己写了。反正都是时间都是n(0)
      

  5.   

    可以进http://www.9i5e.com/Company.aspx 看看,个人觉的不错的例子
      

  6.   

    to idda:
    永正则表达式还只是判断格式,不知道怎么分组,最近也没有时间弄了