【发布时间】:2013-07-23 14:48:41
【问题描述】:
我有这样的数据表
| Project Name | Source | Source Amount
A Abc $10000
B Xyz $12990
C Mnf $10000
A Dqe $50200
B Pgp $14000
A Rsy $27000
并且我需要按行分组,以便将其间的小计汇总为
| Project Name | Source | Source Amount
A Abc $10000
A Dqe $50200
A Rsy $27000
Total of A $87200
B Xyz $12990
B Pgp $14000
Total of B $26990
C Mnf $10000
Total of C $10000
All Total $124190
我在 lambda 中使用了 groupBy 和 sum,但无法通过 lambda 表达式弄清楚如何在现有数据表中包含新行。
我正在使用的代码
dt.AsEnumerable()
.GroupBy(d => d.Field<string>("Project Name"))
.Sum(d=>d.Field<string>("Source Amount"))
【问题讨论】:
-
GroupBy(d => d.Field<string>("Project Name"))返回一个IGrouping<string,DataRow>,它不是DataRow,它是一个可能包含多个数据行的组。顺便说一句,为什么将金额存储为字符串?