Linq中Group和Sum的应用

发布时间:2014-10-17 14:38:35来源:阅读(755)

    今天遇到了一个问题,操作一个DataTable,DataTable的表结构如下:

    1. Id,Name,Math,Chinese  

    此表对应的数据如下图:


    要求合并后的效果如下图:


    自己就想到了for循环的实现办法,也想用Linq可是不知道怎么写。后来msdn了一下,写出了如下的代码:

    1. var query = from c in ds.Tables[0].AsEnumerable()  
    2.             group c by c.Field<int>("Name")  
    3.             into s  
    4.             select new  
    5.             {  
    6.                 ID = s.Select(m => m.Field<int>("ID").ToString()),  
    7.                 Name = s.Select(m => m.Field<string>("Name").ToString()),  
    8.                 Math = s.Sum(p => p.Field<decimal>("Math")),  
    9.                 Chinese = s.Sum(p => p.Field<decimal>("Chinese"))  
    10.             };  
    11.             DataTable dtss = new DataTable();  
    12.             dtss.Columns.Add(new DataColumn("ID"typeof(string)));  
    13.             dtss.Columns.Add(new DataColumn("Name"typeof(string)));  
    14.             dtss.Columns.Add(new DataColumn("Math"typeof(string)));  
    15.             dtss.Columns.Add(new DataColumn("Chinese"typeof(string)));  
    16.             query.ToList().ForEach(p => dtss.Rows.Add(p.ID, p.Name, p.Math, p.Chinese ));  

    留着会有用的。。。不可浪费

    参考:http://msdn.microsoft.com/zh-cn/library/bb386921(v=vs.100).aspx

关键字