DataTable中有以下数据
 1 a 30
 2 a 34
 3 b 33
 4 b 33
 5 a 343
 . ....
 ......
 ......
想得到的结果是
 a 总和
 b 总和
也就是一个分组计算机功能
有什么好的解决方案,大家多多指教!

解决方案 »

  1.   

    SQL  SELECT sUM(A那一列的名字) GROUP BY A那一列的名字 HAVING COUNT(A那一列的名字)>1 
      

  2.   

    SQL  的话前提是你从数据库查出来了,要不就用循环加!
      

  3.   

    在內存表DataTable中處理啊...
    SQL語句都會寫的吧
      

  4.   

    DataTable本身没有这样的功能,你需要自己做个循环处理数据。可以把结果放到别一个DataTable中。
      

  5.   

    object objSum = dt.Compute("sum(字段3)", "字段2='a'");
    前提是知道a这个值,所以还是得循环
    DataView dv = dt.DefaultView;
    dv.Sort = "字段2 asc";
    string tempstr = "";
    for(int i=0;i<dv.Count;i++)
    {
    if(tempstr != dv[i]["字段2"].ToString())
    {
    tempstr = dv[i]["字段2"].ToString();
    //保存tempstr和dt.Compute("sum(字段3)", "字段2='"+tempstr+"'");
    }
    }
      

  6.   

      object _ValueCountA = _Table.Compute("Sum(数字列名)","名字='A'");
                object _ValueCountB = _Table.Compute("Sum(数字列名)", "名字='B'");你可以这样用TABLE
      

  7.   

    看来总归是跳不过一个循环然后Datatable。Comute?
      

  8.   


                DataTable dt = new DataTable();
                dt.Columns.Add(new DataColumn("C1", typeof(int)));
                dt.Columns.Add(new DataColumn("C2", typeof(string)));
                dt.Columns.Add(new DataColumn("C3", typeof(int)));
                dt.Rows.Add(1, "a", 30);
                dt.Rows.Add(2, "a", 40);
                dt.Rows.Add(3, "b", 50);
                dt.Rows.Add(4, "b", 60);
                dt.Rows.Add(5, "a", 70);
                Console.WriteLine("a总和:" + dt.Compute("sum(C3)", "C2='a'"));
                Console.WriteLine("b总和:" + dt.Compute("sum(C3)", "C2='b'"));
    /*
    输出:
    a总和:140
    b总和:110
    */
      

  9.   

    不行的.
    又不是只有a 和 b 後面還有很多行咧.有c .d .e .f......
      

  10.   

    object objSum = dt.Compute("sum(字段3)", "字段2='a'"); 
    前提是知道a这个值,所以还是得循环 DataView dv = dt.DefaultView; 
    dv.Sort = "字段2 asc"; 
    string tempstr = ""; 
    for(int i=0;i <dv.Count;i++) 

      if(tempstr != dv[i]["字段2"].ToString()) 
      { 
        tempstr = dv[i]["字段2"].ToString(); 
        //保存或打印tempstr和dt.Compute("sum(字段3)", "字段2='"+tempstr+"'"); 
      } 
    }
      

  11.   


                DataTable dt = new DataTable();
                dt.Columns.Add(new DataColumn("C1", typeof(int)));
                dt.Columns.Add(new DataColumn("C2", typeof(string)));
                dt.Columns.Add(new DataColumn("C3", typeof(int)));
                dt.Rows.Add(1, "a", 30);
                dt.Rows.Add(2, "a", 40);
                dt.Rows.Add(3, "b", 50);
                dt.Rows.Add(4, "b", 60);
                dt.Rows.Add(5, "c", 70);
                dt.Rows.Add(6, "c", 80);
                dt.Rows.Add(7, "d", 90);
                List<string> list = new List<string>();
                foreach (DataRow dr in dt.Rows)
                {
                    if (!list.Contains(dr["C2"].ToString()))
                    {
                        Console.WriteLine(dr["C2"] + "总和:" + dt.Compute("sum(C3)", "C2='" + dr["C2"] + "'"));
                        list.Add(dr["C2"].ToString());
                    }
                }