我正在循环查看订单列表,并将Sku
和Qty
添加到字典中。如果字典键已经存在,那么我想将Qty
添加到现有值。无法提出正确的语法。例如,循环遍历此列表时:
Sku: "ABC", Qty: 1
Sku: "XYZ", Qty: 3
Sku: "ABC", Qty: 1
在“ABC”的重复Sku
上,它会将现有的Qty
更新为2.
代码:
Dim dict As Dictionary(Of string, Int16) = New Dictionary(Of string, Int16)()
If dict.ContainsKey(order.Sku) Then
dict(order.Sku) = 'What goes here?
Else
dict.Add(order.Sku, order.Qty)
End If
答案 0 :(得分:2)
Dim dict As Dictionary(Of String, Int16) = New Dictionary(Of String, Int16)()
If dict.ContainsKey(order.Sku) Then
dict(order.Sku) += 1 'or += order.Qty if you want to add as much as in the order
Else
dict.Add(order.Sku, order.Qty)
End If
dict(order.Sku)
会为您想要增加的Int16
对象编制索引。
答案 1 :(得分:2)
如果您还没有我建议转 Option Strict On 。
此代码:
dict(order.Sku) += 1
使用 Option Strict On ,会产生以下编译错误:
Option Strict On禁止从“整数”到“短”的隐式转换
您可以选择将dict
更改为(Of String, Integer)
,这样可以解决该问题。或者你可以沿着转换为Short
:
dict(order.Sku) += CShort(1)
如果 order.Qty
的类型为Int32
,那么您可能不会遇到任何问题:
dict(order.Sku) += order.Qty
答案 2 :(得分:0)
尝试以下
Dim dict As Dictionary(Of String, Int16) = New Dictionary(Of String, Int16)()
If dict.ContainsKey(order.Sku) Then
dict(order.Sku) = dict(order.Sku) + order.Qty 'Assuming order.Qty is new quantity to be added
Else
dict.Add(order.Sku, order.Qty)
End If