Select eid, eName, sum(qut) qut from xxx group by eid, ename不是这样就行了咩

解决方案 »

  1.   

    他这个是datatableprotected void Page_Load(object sender, EventArgs e)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("eId");
                dt.Columns.Add("eName");
                dt.Columns.Add("qut");
                dt.Rows.Add(new object[] { "8016", "曹海霞", 633 });
                dt.Rows.Add(new object[] { "8026", "钟华云", 400 });
                dt.Rows.Add(new object[] { "8019", "戴燕", 633 });
                dt.Rows.Add(new object[] { "8019", "戴燕", 633 });
                dt.Rows.Add(new object[] { "8020", "李建玲", 633 });
                dt.Rows.Add(new object[] { "8016", "曹海霞", 633 });
                dt.Rows.Add(new object[] { "8026", "钟华云", 100 });
                dt.Rows.Add(new object[] { "8026", "钟华云", 633 });
                dt.Rows.Add(new object[] { "8028", "吴慧莲", 1157 });
                dt.Rows.Add(new object[] { "8016", "曹海霞", 633 });
                dt = Encrypt(dt); 
            }        ///<summary>
            /// 合计
            ///</summary>
            ///<returns></returns>
            public static DataTable Encrypt(DataTable dt)
            {
                DataTable dtResult = new DataTable();
                dtResult.Columns.Add("eId");
                dtResult.Columns.Add("eName");
                dtResult.Columns.Add("qut");            Decimal qut = new Decimal();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    qut = Convert.ToDecimal(dt.Rows[i]["qut"]);
                    for (int j = i + 1; j < dt.Rows.Count; j++)
                    {
                        if (dt.Rows[i]["eId"] == dt.Rows[j]["eId"])
                        {
                            qut += Convert.ToDecimal(dt.Rows[j]["qut"]);
                            dt.Rows.RemoveAt(j);
                            j--;
                        }
                    }
                    dtResult.Rows.Add(new object[] { dt.Rows[i]["eId"], dt.Rows[i]["eName"], qut });
                }            return dtResult;
            }
      

  2.   

    DataTable.Compute 方法
      

  3.   


    //创建一个DataTable对象并创建列 
                DataTable dt = new DataTable();
                dt.Columns.Add("eId", typeof(string));
                dt.Columns.Add("eName", typeof(string));
                dt.Columns.Add("qut", typeof(string));
                //获取数据
                DataTable dx =GetTable() ;
                for (int i = 0; i < dx.Rows.Count; i++)
                {
                    //定义一个Int变量用于判断是否有匹配项
                    int state = 0;
                    for (int j = 0; j < dt.Rows.Count; j++)
                    {
                        if (dx.Rows[i]["eId"].Equals(dt.Rows[j]["eId"]))
                        {
                            dt.Rows[j]["qut"] = Convert.ToDecimal(dt.Rows[j]["qut"]) + Convert.ToDecimal(dx.Rows[i]["qut"]);
                            state = 1;
                            break;
                        }
                    }
                    //如果没有一样的就添加一行
                    if (state == 0)
                    {
                        DataRow dr = dt.NewRow();
                        dr["eId"] = dx.Rows[i]["eId"];
                        dr["eName"] = dx.Rows[i]["eName"];
                        dr["qut"] = dx.Rows[i]["qut"];
                        dt.Rows.Add(dr);
                    }
                }
                return dt;
      

  4.   

    你参考如下的代码static void Main(string[] args)
            {            DataTable dt = CreateDataTable();
                var query = from t in dt.AsEnumerable()
                            group t by new { t1 = t.Field<string>("eId"), t2 = t.Field<string>("eName") } into m
                            select new
                            {
                                eId = m.Key.t1,
                                eName = m.Key.t2,
                                qut = m.Sum(n => n.Field<int>("qut"))
                            };
                /*
                 + [0] { eId = "8016", eName = "张一", qut = 25 } <Anonymous Type>
                + [1] { eId = "8019", eName = "张三", qut = 38 } <Anonymous Type>
                + [2] { eId = "8020", eName = "张五", qut = 25 } <Anonymous Type>             */        }
            public static DataTable CreateDataTable()
            {
                DataTable tblDatas = new DataTable("Datas");
                tblDatas.Columns.Add("eId", typeof(string));
                tblDatas.Columns.Add("eName", typeof(string));
                tblDatas.Columns.Add("qut", typeof(int));            tblDatas.Rows.Add(new object[] { "8016", "张一", 10});
                tblDatas.Rows.Add(new object[] { "8016", "张一", 15});
                tblDatas.Rows.Add(new object[] { "8019", "张三", 20});
                tblDatas.Rows.Add(new object[] { "8019", "张三", 18});
                tblDatas.Rows.Add(new object[] { "8020", "张五", 25});
                return tblDatas;
            }
      

  5.   

    lingq 的我也加一个
    var query = from c in ds.Tables[0].AsEnumerable()  
                group c by c.Field<int>("eId")  
                into s  
                select new  
                {  
                    eId = s.Select(m => m.Field<int>("eId").ToString()),  
                    eName = s.Select(m => m.Field<string>("eName").ToString()),  
                    qut = s.Sum(p => p.Field<decimal>("qut"))  
                };              DataTable dtss = new DataTable();  
                dtss.Columns.Add(new DataColumn("eId", typeof(string)));  
                dtss.Columns.Add(new DataColumn("eName", typeof(string)));  
                dtss.Columns.Add(new DataColumn("qut", typeof(int)));  
                query.ToList().ForEach(p => dtss.Rows.Add(p.eId, p.eName, p.qut)); 
      

  6.   

    DataTable.Compute 方法 可以。再者麻烦点用DataTable.Select()方法先把你想要的数据按照一定条件找出来。最后再保存
      

  7.   

    以上两个 linq 的  select 中最后一句的最后部分出错"当从一个数字执行强制转换时,真必须是一个小于无限大的数字"
    2楼的没有汇总出来