Linq C#Groupby on datatable

时间:2012-11-21 11:19:49

标签: c# linq group-by linq-to-dataset

我想写一个Linq个问题,在DataTable上应用分组,将结果输出为DataTable

我尝试了此代码,该结果返回var类型的结果,但我想将结果放在DataTable

var query = from row in dt.AsEnumerable()
            group row by row.Field<DateTime>("ExpDate").Year into grp
            select new
            {
                Years = grp.Key,
                RSF = grp.Sum(r => r.Field<decimal>("SpaceRSF"))
            };

请你帮我找一个合适的答案。

2 个答案:

答案 0 :(得分:2)

查看How to: Implement CopyToDataTable - 本主题描述了如何实现两个自定义CopyToDataTable扩展方法,这些方法接受DataRow以外类型的泛型参数T.

只需使用该文章中的代码(ObjectShredder<T>)即可获得以下结果:

DataTable table = query.CopyToDataTable();

答案 1 :(得分:0)

好的,所以根据这个

select new
            {
                Years = grp.Key,
                RSF = grp.Sum(r => r.Field<decimal>("SpaceRSF"))
            };

code which return result as var type有效地返回具有两个属性的对象集合:YearsRSF
如果您想拥有数据表,那么编写将所有数据放入数据表的代码。基本上,它看起来可能与以下类似:

DataTable table = new DataTable();
table.Columns.Add("Years");
table.Columns.Add("RSF");
foreach(var item in query)
{
     table.Add(item.Years, items.RSF)
}

希望这有帮助。