首先呢,是从一个文本文件里获取数据,然后存到datatable表里,记住数据库里面是没有的哦,因为今天的数据是不能加到数据库里的,所以只能读取到内存里,然后直接就在内存里进行统计的,有没有解决的方法....
我已经想了N天了,找了N天的答案了......
现在都没辙了.....
谢谢各位的帮助了....
我的分数不多了,希望各位不要嫌弃我分数给的太少,谢谢了.

解决方案 »

  1.   

    用DataTable的Compute 方法啊。 
    比如 定义了一个 Datatable table,
    有 Total,id 字段。
    下面的代码将id=5的全部累加起来。object sumObject;
    sumObject = table.Compute("Sum(Total)", "ID = 5");
      

  2.   

    int sum = 0;
    foreach(DataRow dr in dt.Rows)
    {
        sum += int.Prase(dr["累加字段"].ToString());
    }
      

  3.   

    貌似你说的太笼统了,能给具体的数据吗foreach或者for循环就够了
      

  4.   

    http://msdn.microsoft.com/en-us/library/system.data.datatable.compute.aspx
      

  5.   

    id  cItem  nMoney  nCount
    1    训练  100    1
    2 新手手册 300    2
    3 训练   500    2
    4 训练   120    1
    要根据cItem来统计nMoney和nCount的累加和
    结果:训练的nMoney=720,nCount=4
         新手手册的nMoney=300,nCount=2
      

  6.   

    就用Compute就可以,而且在程序里处理的代码也写出来了
      

  7.   

     /*
                id  cItem  nMoney  nCount 
    1    训练  100    1 
    2 新手手册 300    2 
    3 训练   500    2 
    4 训练   120    1 
        要根据cItem来统计nMoney和nCount的累加和 
       结果:训练的nMoney=720,nCount=4 
             新手手册的nMoney=300,nCount=2
                */
                //定义表结构
                DataTable table = new DataTable();
                DataColumn c1 = new DataColumn("id");
                DataColumn c2 = new DataColumn("cItem", System.Type.GetType("System.String"));
                DataColumn c3 = new DataColumn("nMoney", System.Type.GetType("System.Int32"));
                DataColumn c4 = new DataColumn("nCount", System.Type.GetType("System.Int32"));
                //添加列
                table.Columns.Add(c1);
                table.Columns.Add(c2);
                table.Columns.Add(c3);
                table.Columns.Add(c4);
                //构造行
                DataRow r1 = table.NewRow();
                r1[0] = "1";
                r1[1] = "训练";
                r1[2] = "100";
                r1[3] = "1";
                //构造行
                DataRow r2 = table.NewRow();
                r2[0] = "2";
                r2[1] = "新手手册";
                r2[2] = "300";
                r2[3] = "2";
                //构造行
                DataRow r3 = table.NewRow();
                r3[0] = "3";
                r3[1] = "训练";
                r3[2] = "500";
                r3[3] = "2";
                //构造行
                DataRow r4 = table.NewRow();
                r4[0] = "4";
                r4[1] = "训练";
                r4[2] = "120";
                r4[3] = "1";            //添加行
                table.Rows.Add(r1);
                table.Rows.Add(r2);
                table.Rows.Add(r3);
                table.Rows.Add(r4);
                //计算
                //训练的nMoney=720,nCount=4 
                int nMoney1 = Convert.ToInt32(table.Compute("sum(nMoney)", "cItem='训练'"));
                int nCount1 = Convert.ToInt32(table.Compute("sum(nCount)", "cItem='训练'"));            //新手手册的nMoney=720,nCount=4 
                int nMoney2 = Convert.ToInt32(table.Compute("sum(nMoney)", "cItem='新手手册'"));
                int nCount2 = Convert.ToInt32(table.Compute("sum(nCount)", "cItem='新手手册'"));
                
      

  8.   

    关键是还是有点不懂啊,sum是复合函数,用时老提示异常问题.....老实例给个参考下...谢谢..
      

  9.   

    无效的聚合函数 Sum()和类型 String 的用法。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.DataException: 无效的聚合函数 Sum()和类型 String 的用法。源错误: 
    行 80:                 //moneyObject = dt01.Compute("sum(nMoney)", "cItem='"+drItem["cItem"]+"'");
    行 81:                 //countObject = dt01.Compute("sum(nCount)", "cItem='" + drItem["cItem"] + "'");
    行 82:                 moneyObject = Convert.ToDouble(dt01.Compute("sum(nMoney)", "cItem='训练'"));
    行 83:                 countObject = Convert.ToInt32(dt01.Compute("sum(nCount)","cItem='训练'"));
    行 84:             }
     
      

  10.   

    用sum时会出现这个错误....不知道是为什么?
      

  11.   

    DataTable dt01 = new DataTable();
                dt01.Columns.Add("id");
                dt01.Columns.Add("cItem");
                dt01.Columns.Add("nMoney");
                dt01.Columns.Add("nCount");
                dt01.Columns.Add("dDateTime");            DataRow dr = dt01.NewRow();//1
                dr["id"] = "1";
                dr["cItem"] = "新手训练";
                dr["nMoney"] = "100";
                dr["nCount"] = "1";
                dr["dDateTime"] = "2009-11-02";            DataRow dr02 = dt01.NewRow();//2
                dr02["id"] = "2";
                dr02["cItem"] = "训练";
                dr02["nMoney"] = "300";
                dr02["nCount"] = "2";
                dr02["dDateTime"] = "2009-11-02";            DataRow dr03 = dt01.NewRow();//3
                dr03["id"] = "3";
                dr03["cItem"] = "训练";
                dr03["nMoney"] = "500";
                dr03["nCount"] = "8";
                dr03["dDateTime"] = "2009-11-02";            DataRow dr04 = dt01.NewRow();//4
                dr04["id"] = "4";
                dr04["cItem"] = "训练";
                dr04["nMoney"] = "600";
                dr04["nCount"] = "2";
                dr04["dDateTime"] = "2009-11-02";            DataRow dr05 = dt01.NewRow();//5
                dr05["id"] = "5";
                dr05["cItem"] = "升级手册";
                dr05["nMoney"] = "120";
                dr05["nCount"] = "1";
                dr05["dDateTime"] = "2009-01-02";            dt01.Rows.Add(dr);
                dt01.Rows.Add(dr02);
                dt01.Rows.Add(dr03);
                dt01.Rows.Add(dr04);
                dt01.Rows.Add(dr05);          
                //统计字段
                foreach (DataRow drItem in tableview.Rows)
                {
                    double moneyObject;
                    int countObject;
                    //moneyObject = dt01.Compute("sum(nMoney)", "cItem='"+drItem["cItem"]+"'");
                    //countObject = dt01.Compute("sum(nCount)", "cItem='" + drItem["cItem"] + "'");
                    moneyObject = Convert.ToDouble(dt01.Compute("sum(nMoney)", "cItem='训练'"));
                    countObject = Convert.ToInt32(dt01.Compute("sum(nCount)","cItem='训练'"));
                }
      

  12.   

    nMoney的类型要设置为int32,
     //moneyObject = dt01.Compute("sum(nMoney)", "cItem='"+drItem["cItem"].ToStrin()+"'"); 看看,
      

  13.   


     dt01.Columns.Add("cItem", System.Type.GetType("System.String"));
                dt01.Columns.Add("nMoney", System.Type.GetType("System.Int32"));
                dt01.Columns.Add("nCount", System.Type.GetType("System.Int32"));
    //moneyObject = dt01.Compute("sum(nMoney)", "cItem='"+drItem["cItem"].ToString()+"'");看看,
         
      

  14.   

                //定义表结构
                DataTable table = new DataTable();
                DataColumn c1 = new DataColumn("id");
                DataColumn c2 = new DataColumn("cItem", System.Type.GetType("System.String"));
                DataColumn c3 = new DataColumn("nMoney", System.Type.GetType("System.Int32"));
                DataColumn c4 = new DataColumn("nCount", System.Type.GetType("System.Int32"));
                //添加列
                table.Columns.Add(c1);
                table.Columns.Add(c2);
                table.Columns.Add(c3);
                table.Columns.Add(c4);
                //构造行
                DataRow r1 = table.NewRow();
                r1[0] = "1";
                r1[1] = "训练";
                r1[2] = "100";
                r1[3] = "1";
                //构造行
                DataRow r2 = table.NewRow();
                r2[0] = "2";
                r2[1] = "新手手册";
                r2[2] = "300";
                r2[3] = "2";
                //构造行
                DataRow r3 = table.NewRow();
                r3[0] = "3";
                r3[1] = "训练";
                r3[2] = "500";
                r3[3] = "2";
                //构造行
                DataRow r4 = table.NewRow();
                r4[0] = "4";
                r4[1] = "训练";
                r4[2] = "120";
                r4[3] = "1";            //添加行
                table.Rows.Add(r1);
                table.Rows.Add(r2);
                table.Rows.Add(r3);
                table.Rows.Add(r4);            var test = table.AsEnumerable();
                var query =
                    from p in test
                    group p by p.Field<string>("cItem") into g
                    select new { item = g.Key, students = g };            foreach (var g in query)
                {
                    Console.WriteLine("{0}的nMoney={1},nCount={2} ", g.item, 
                        g.students.Sum(w => w.Field<int>("nMoney")), 
                        g.students.Sum(w => w.Field<int>("nCount")));
                }