如何垂直分组数据表

时间:2016-11-22 11:10:20

标签: c# linq datatable group-by

如果我有这样的数据表:

CompanyId   Year   Total1  Total2  Total3

 3022       2016   36.7     98.1   10.4
 3022       2015   77.3     55.3   98.4
 3011       2016   73.1     13.3   11.6
 3011       2015   33.6     10.9   8.1

如何获得以下结果:垂直分组数据如下:

          Total1        Total2        Total3
        2016  2015    2016  2015     2016  2015
 3022   36.7  77.3    98.1  55.3     10.4  98.4
 3011   73.1  33.6    13.3  10.9     11.6  8.1

1 个答案:

答案 0 :(得分:1)

这将使用您请求的格式创建一组匿名类型。根据您的意图,我建议您创建特定的课程

Total1 = c.Select(t1 => new { Year = t1["Year"], Total1 = t1["Total1"]

代码说明:

首先,我按CompanyId对DataTable行进行分组,这将产生2组,每组2行。

对于每个组,我定义一个匿名项目(c)并给它两个属性:公司,我将存储CompanyId和总计,我现在将解析。

总计也被定义为匿名类,其中包含三个属性 Total1 Total2 Total3

这些中的每一个都是作为匿名类实现的,其中包含属性,以及' Total' 十进制值

由于在这个例子中每个公司拥有两个不同年份的数据,我们将有2个记录,每个&Total;#Total;因此:

{{1}}

将返回两个Total1值,为了对它们进行分类和区分,我将它们与year属性一起存储在匿名类型中。