【发布时间】:2016-03-30 18:38:39
【问题描述】:
我一直在为这个问题摸不着头脑......我在内存中有一个表,一个结构如下的 DataTable:
Input:
ID | Invoice | Account | Payment | Subtotal
-----------------------------------------------------------------
0 | 09310 | 123 | 6.0 | ?
-----------------------------------------------------------------
我希望使用 Linq 执行以下操作(我对 Linq 很陌生!)
对于同一帐户的每一行,将所有付款加在一起并写入或更新小计字段 我不想折叠表格,发票号码会有所不同。我的想法是有两种方法可以做到这一点
(A)从所有记录的空白小计列开始...来自付款的值将加在一起,然后写入小计列
(B) 创建表时,我将付款值复制到小计字段中。稍后,linq 只需添加/替换同一列中的值
所以我们会忽略 ID 和 Invoice 字段;它的 ACCOUNT 和 SUBTOTAL(如果使用样式 (A),还有 PAYMENT)
(A) Input: *(note that there are two records for 123)*
ID | Invoice | Account | Payment | Subtotal
-----------------------------------------------------------------
0 | 03310 | 123 | 6.0 |
-----------------------------------------------------------------
1 | 09728 | 123 | 4.0 |
-----------------------------------------------------------------
2 | 07731 | 559 | 18.0 |
-----------------------------------------------------------------
(B) Input:
ID | Invoice | Account | Payment | Subtotal
-----------------------------------------------------------------
0 | 03310 | 123 | 6.0 | 6.0
-----------------------------------------------------------------
1 | 09728 | 123 | 4.0 | 4.0
-----------------------------------------------------------------
2 | 07731 | 559 | 18.0 | 18.0
-----------------------------------------------------------------
Result:
ID | Invoice | Account | Payment | Subtotal
-----------------------------------------------------------------
0 | 03310 | 123 | 6.0 | 10.0
-----------------------------------------------------------------
1 | 09728 | 123 | 4.0 | 10.0
-----------------------------------------------------------------
2 | 07731 | 559 | 18.0 | 18.0
-----------------------------------------------------------------
因此,每个小计单元格将包含每个唯一帐户的所有付款总额
我认为样式 (B) 会更简单,因为我们只需要处理这两列
对于样式(B),我尝试过类似
rpTable.AsEnumerable().GroupBy(g => int.Parse(g.Field<string>("Account"))).Select(g => g.Sum(p => p.Field<decimal>("SubTotal")));
但我可以说它缺少一些东西.....hmmmm
【问题讨论】:
标签: c# linq datatable subtotal linq-group