日期:2014-05-18  浏览次数:20971 次

Linq 合并DataTable中的行,并sum求和
Datatable
medicID price num unit
0001 1.2 10 盒
0001 1.2 15 盒
0002 14 15 支
0003 10 10 盒
0002 14 10 盒

当medicID price unit都相同时 合并一行,并求合并行num的和
用linq,怎么写啊。
给个例子

------解决方案--------------------
C# code

void Main()
{
    var dt=new DataTable();
    dt.Columns.Add("medicID");
    dt.Columns.Add("price");
    dt.Columns.Add("num",typeof(int));
    dt.Columns.Add("unit");
    dt.Rows.Add("0001","1.2",10,"盒");
    dt.Rows.Add("0001","1.2",15,"盒");
    dt.Rows.Add("0002","14",15,"支");
    dt.Rows.Add("0003","10",10,"盒");
    dt.Rows.Add("0002","14",10,"盒");
    
    var query=dt.AsEnumerable()
                .GroupBy(d=>new {medicID=d.Field<string>("medicID"),price=d.Field<string>("price"),unit=d.Field<string>("unit")})
                .Select(g=>new{
                    medicID=g.Key.medicID,
                    price=g.Key.price,
                    num=g.Sum(d=>d.Field<int>("num")),
                    unit=g.Key.unit
                });
     
}