如何更改另一个字典中字典中的值?

时间:2018-02-20 16:18:54

标签: vb.net dictionary multidimensional-array

我在网上看了几个小时后来到这里。没有什么能与我想要实现的目标接近。

我有: -

Private Portfolio_Client_List As New Dictionary(Of String, Dictionary(Of String, Double))
然后我将键添加到以下内容中: -

Portfolio_Client_List.Add(str.Substring(6, 5).Trim, New Dictionary(Of String, Double))

然后我将键添加到另一个字典中,如下所示: -

For Each pair As KeyValuePair(Of String, Dictionary(Of String, Double)) In Portfolio_Client_List
    pair.Value.Add("Office Collections", 0.00)
    pair.Value.Add("Home Collections", 0.00)
Next

现在,我想更新Office CollectionsHome Collections键值中的值。

我该怎么办?我认为这很简单: -

For Each pair As KeyValuePair(Of String, Double) In Portfolio_Client_List("key")
    pair.Value += Head_Office_Payments
Next

然而它只是给我一个readonly错误。有没有办法做到这一点,还是我在浪费时间?

1 个答案:

答案 0 :(得分:2)

不,KeyValuePairs是不可变的结构,因此您无法修改它们,Value是只读的。

但是这有效(你想将echo $RANDOM$RANDOM 820227815 添加到旧值):

Head_Office_Payments

请注意,您需要Dim dict As Dictionary(Of String, Double) = Portfolio_Client_List("key") For Each key As String In dict.Keys.ToList() dict(key) += Head_Office_Payments Next (创建一个新列表),因为您无法在枚举时修改集合,设置字典的dict.Keys.ToList会增加它的版本号,从而使迭代器无效。这就是为什么我更喜欢这种单线LINQ解决方案:

Value