C# dataTable类型数据分组求和

一、需求背景
通过Data Table创建多个行,根据Material进行Group By分组,对Qty进行求和运算.
原始数据

Material    TotalQTY    Qty
A    10        1
B201
B202
A    103


要获得的数据

Material    TotalQTY    Qty
A104
B203


实际上要执行该SQL语句:
select Material ,TotalQTY,sum(Qty) from tableName group by Material ,TotalQTY ;
由于该表是有前台创建的,DB中没有该表信息所以不能使用SQL语句,我采用的Linq语句实现的对Material ,TotalQTY的分组求和。

二、使用DataTable创建表及数据

//1、新建表
private  DataTable dtResult = new DataTable();

//2、表中添加列
 dtResult.Columns.Add("Material", typeof(string));
 dtResult.Columns.Add("TotalQTY", Type.GetType("System.Decimal"));
 dtResult.Columns.Add("QTY", Type.GetType("System.Decimal"));
 
//3、初始化行并添加数据
DataRow row = dtResult.NewRow();
row["Material"] = "Material_A";
row["TotalQTY"] = "100";
row["QTY"] = "5";

//4、表中添加行
dtResult.Rows.Add(row);


三、GroupBy对数据分组求和
采用Linq语句对数据进行分组,通过创建新的DataTable达到分组求和的目的。

 DataTable dtGroupBy = dtResult.AsEnumerable().GroupBy(r => new { Material= r["Material"], TotalQTY= r["TotalQTY"]}).Select(
                    g =>{
                        var row = dtResult.NewRow();

                        row["Material"] = g.Key.Material;
                        row["TotalQTY"] = g.Key.TotalQTY;
                        row["QTY"] = g.Sum(r => (decimal)r["QTY"]);
                        return row;
                    }).CopyToDataTable();


dtGroupBy就是要获得的数据

Material    TotalQTY    Qty
A104
B203
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值