我有这样计算总使用LINQ列在c#
ID Description Principal Interest Total
123 Paid 100 150 250
Balance 50 50 100
Total ? ? ?
124 Paid 100 150 250
Balance 50 50 100
Total ? ? ?
类的结构:
public class APIBillingHistory
{
public List<APIBillingHistoryDetails> BillingHistoryDetails;
}
public class APIBillingHistoryDetails
{
public string BillId;
public string Description;
public Decimal Principal;
public Decimal Interest;
public Decimal Total;
}
我想为每列总和值对于每个ID。因此,在上面的例子中,对于,ID 123的Total
同样是150,Interest
200。我在这里检查了这个解决方案How to create Total column and Total row using LINQ,但无法得到它。
代码:
responseObj = new APIBillingHistory
{
BillingHistoryDetails = billingHistory.BillingHistoryDetails
.GroupBy(detail => new { detail.BillId, detail.Description})
.Select(group => new APIBillingHistoryDetails
{
BillId = group.Key.BillId,
Description = group.Key.Description,
Principal = group.Sum(t => t.Principal),
Interest = group.Sum(t => t.Interest),
Total = group.Sum(t => t.Principal) + group.Sum(t => t.Interest)
}).Concat(new APIBillingHistoryDetails
{
Description = "Total",
/* Not sure what to write over here */
})
};
编辑:
为了澄清什么,我想实现:
- 我的源记录列表中不包含 “总计” 列& “总计” 行。我想手动添加它。
- 我能弄清楚如何添加将包含值的总和“总计”列。
Principal
&Interest
将包含decimal
格式的值。ID
列是整数。我想正在通过聚合基于ID
计算,即计算后,应该得到只显示Total
行显示总计行每个ID
- 值
Principal
&Interest
。
有什么建议吗?
对于第二行和第三行,ID列等于什么?一个'Decimal'怎么能成为'?'?你想总结'Total'还是你的意思是'Total'行不在你的源数据中? – NetMage
此外,您的源数据是否已包含每行的“总计”字段,还是必须添加? – NetMage
我想推荐使用名为LinqPad的工具。这就像使用Sql Server Management Studio,但在C#实体上一样。允许您可视化LINQ表达式的结果并真正理解发生了什么。 –