我在网上看了几个小时后来到这里。没有什么能与我想要实现的目标接近。
我有: -
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 Collections
和Home Collections
键值中的值。
我该怎么办?我认为这很简单: -
For Each pair As KeyValuePair(Of String, Double) In Portfolio_Client_List("key")
pair.Value += Head_Office_Payments
Next
然而它只是给我一个readonly错误。有没有办法做到这一点,还是我在浪费时间?
答案 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