C# linq对dataTable group分组求和

查询出来的表dtSumNaturalWorkHour,根据PersonName,ProjectName对WorkHour求和。

var query = dtSumNaturalWorkHour.AsEnumerable().GroupBy(d => new { PersonName = d.Field<string>("PersonName"), ProjectName = d.Field<string>("ProjectName")  
                   })  
              .Select(g => new  
              {  
                  PersonName = g.Key.PersonName,  
                  ProjectName = g.Key.ProjectName,  
                  num = g.Sum(d => Convert.ToDouble(d["WorkHour"])),  
              });  

只根据一列值group 的查询求和:根据PersonName对WorkHour求和.

var dt=  dtSumNaturalWorkHour.Rows.Cast<DataRow>().GroupBy<DataRow, string>(row => Convert.ToString(row["PersonName"])).  
                   Select(group => new { group.Key, Value = group.Sum(x => Convert.ToDouble(x["WorkHour"])) });  

PS

                var result = dtExecItem.Rows.Cast<DataRow>().
                    GroupBy<DataRow, string>(row => Convert.ToString(row["StatID"])).
                    Select(group => new
                    {
                        group.Key,
                        SumValue = group.Sum(x => Convert.ToDouble(x["Price"]))
                    });






                foreach (var stat in result)
                {
                    DataRow dr = dtPromClass.NewRow();
                    dr["ClassTypeID"] = stat.Key;
                    dr["ClassAmount"] = stat.SumValue;
                    dr["PromAmount"] = 0;
                    dtPromClass.Rows.Add(dr);
                }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值