我是这样写的 但是最后的和不对!郁闷!!!!! DataTable temp = new DataTable();        DataColumn coldc1 = new DataColumn();
        coldc.ColumnName = "dc";
        temp.Columns.Add(coldc1);
        DataColumn coldqcl1 = new DataColumn("dqcl", typeof(System.Double));
        temp.Columns.Add(coldqcl1);
        DataColumn colmax1 = new DataColumn("max", typeof(System.Double));
        temp.Columns.Add(colmax1);
        DataColumn colmin1 = new DataColumn("min", typeof(System.Double));
        temp.Columns.Add(colmin1);
        DataColumn colgrl1 = new DataColumn("grl", typeof(System.Double));
        temp.Columns.Add(colgrl1);
        DataColumn colclmax1 = new DataColumn("clmax", typeof(System.Double));
        temp.Columns.Add(colclmax1);
        DataColumn colclmin1 = new DataColumn("clmin", typeof(System.Double));
        temp.Columns.Add(colclmin1);        int nI = 0;
        double vl1 = 0,vl2=0,vl3=0,vl4=0,vl5=0,vl6=0;
        string str = dt.Rows[0]["dc"].ToString();
        DataRow row1 = null;        while (nI != dt.Rows.Count)
        {
           row1 = temp.NewRow();           vl1 = double.Parse(dt.Rows[nI]["dqcl"].ToString());
           vl2 = double.Parse(dt.Rows[nI]["max"].ToString());
           vl3 = double.Parse(dt.Rows[nI]["min"].ToString());
           vl4 = double.Parse(dt.Rows[nI]["grl"].ToString());
           vl5 = double.Parse(dt.Rows[nI]["clmax"].ToString());
           vl6 = double.Parse(dt.Rows[nI]["clmin"].ToString());            if (str == dt.Rows[nI]["dc"].ToString())
            {                vl1 +=vl1;
                vl2 +=vl2;
                vl3 +=vl3;
                vl4 += vl4;
                vl5 += vl5;
                vl6 += vl6;
             
            }
            else
            {
                //row1 = temp.NewRow();                row[0] = str;
                row[1] = vl1;
                row[2] = vl2;
                row[3] = vl3;
                row[4] = vl4;
                row[5] = vl5;
                row[6] = vl6;                row1[0] = str;
                row1[1] = vl1;
                row1[2] = vl2;
                row1[3] = vl3;
                row1[4] = vl4;
                row1[5] = vl5;
                row1[6] = vl6;                str = dt.Rows[nI]["dc"].ToString();                if (row1 != null)
                {
                    temp.Rows.Add(row1);
                    vl1 = 0;
                    vl2 = 0;
                    vl3 = 0;
                    vl4 = 0;
                    vl5 = 0;
                    vl6 = 0;
                }
                
            }
            nI++;
        }
        dt = temp;
        dt.Columns[0].ColumnName = "dc";

解决方案 »

  1.   


    你这样不是累加如果想累加 要再定义6个值 sum1,,sum6
    然后if(..)
    {
     sum1 += vl1;
    ..
    }
    else
    {
    }你现在这样写 等于是 每次循环进来 你都将vl1重新附了次值,之前的和被冲掉了
    然后if(true)  vl1+=vl1; 等于是将这一行数据的这一列值乘以2了
    所以最后的合计值 是最后一次为真的数据的2倍
    不是所有的合计
      

  2.   

    其实我也有点糊涂了  你说的这个情况我也做了 出来的值还是不对我把具体情况说说吧! 厂      a      b      c       d      e      f
    A厂      0     1984   467     1887   495    1842 
    A厂      774   1417   258     1015   2401  1457 
    B厂      434   2594   511     2664   125    1046 
    B厂      318   682     2213   1052   2472   2703 现在就要把都同样厂的合并起来 达到以下效果 厂   a       b     c       d      e      f
    A厂  总和   总和   总和     总和   总和    总和 
    B厂  总和   总和   总和     总和   总和    总和 
      

  3.   

    这些数据在一个DataTable里面  只能从这个DataTable里面取!
      

  4.   

    求A厂a总和:table.Compute("Sum("a")", "厂=‘A厂’")
    以此类推,两个循环就能达到你要的结果。