1

我想编写一个Linq查询来应用 group-by on 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"))
            };

请你能帮助我找到一个正确的答案。

4

2 回答 2

2

查看如何:实现 CopyToDataTable - 本主题描述如何实现两个自定义 CopyToDataTable 扩展方法,它们接受 DataRow 以外的类型的泛型参数 T。

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

DataTable table = query.CopyToDataTable();
于 2012-11-21T11:26:48.280 回答
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)
}

希望这可以帮助。

于 2012-11-21T11:26:17.377 回答