我首先想到的是使用Aggregate
函數填充字典。事情是這樣的:
Dim MyTotals =
AllTargetRows
.Aggregate(
new Dictionary<string, int>()
{
{ "January", 0 },
{ "February", 0 },
{ "March", 0 },
{ "April", 0 },
{ "May", 0 },
{ "June", 0 },
{ "July", 0 },
{ "August", 0 },
{ "September", 0 },
{ "October", 0 },
{ "November", 0 },
{ "December", 0 },
{ "Total", 0 }
},
(acc, costRow) =>
{
acc["January"] += costRow.January;
acc["February"] += costRow.February;
acc["March"] += costRow.March;
acc["April"] += costRow.April;
acc["May"] += costRow.May;
acc["June"] += costRow.June;
acc["July"] += costRow.July;
acc["August"] += costRow.August;
acc["September"] += costRow.September;
acc["October"] += costRow.October;
acc["November"] += costRow.November;
acc["December"] += costRow.December;
acc["Total"] += costRow.Total;
return acc;
});
這將導致一個字典,其中鍵是一年中的月份(和「總」)和值是每個月的值的總和。
對不起,我錯過了VB.NET標記。 VB.NET不是我的強項,但我認爲這在VB.NET中是等價的。
Dim MyTotals = _
AllTargetRows _
.Aggregate(_
New Dictionary(Of String, Integer) From { _
{"January", 0}, _
{"February", 0}, _
{"March", 0}, _
{"April", 0}, _
{"May", 0}, _
{"June", 0}, _
{"July", 0}, _
{"August", 0}, _
{"September", 0}, _
{"October", 0}, _
{"November", 0}, _
{"December", 0}, _
{"Total", 0} _
}, _
Function(acc, costRow)
acc("January") += costRow.January
acc("February") += costRow.February
acc("March") += costRow.March
acc("April") += costRow.April
acc("May") += costRow.May
acc("June") += costRow.June
acc("July") += costRow.July
acc("August") += costRow.August
acc("September") += costRow.September
acc("October") += costRow.October
acc("November") += costRow.November
acc("December") += costRow.December
acc("Total") += costRow.Total
Return acc
End Function)
我不知道,如果Aggregate
函數的這個重載可以轉換爲查詢語法。一個(可能更簡單的)替代方法是完全放棄LINQ,在運行查詢之前簡單地創建字典,然後循環遍歷每行並以這種方式填充字典。就像這樣:
Dim MyTotals = _
New Dictionary(Of String, Integer) From { _
{"January", 0}, _
{"February", 0}, _
{"March", 0}, _
{"April", 0}, _
{"May", 0}, _
{"June", 0}, _
{"July", 0}, _
{"August", 0}, _
{"September", 0}, _
{"October", 0}, _
{"November", 0}, _
{"December", 0}, _
{"Total", 0}}
For Each costRow as AllTargetRow in AllTargetRows
MyTotals("January") += costRow.January
MyTotals("February") += costRow.February
MyTotals("March") += costRow.March
MyTotals("April") += costRow.April
MyTotals("May") += costRow.May
MyTotals("June") += costRow.June
MyTotals("July") += costRow.July
MyTotals("August") += costRow.August
MyTotals("September") += costRow.September
MyTotals("October") += costRow.October
MyTotals("November") += costRow.November
MyTotals("December") += costRow.December
MyTotals("Total") += costRow.Total
Next
字典呢? – ilans
@ilanS:我猜想會有一個'Dictionary'。問題是,怎麼樣? – dotNET
你究竟做了什麼?「這使得無法遍歷十二個值。」 ? – ilans