我有這樣計算總使用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表達式的結果並真正理解發生了什麼。 –