如果存在字典键,则添加到值

时间:2017-03-21 11:27:13

标签: vb.net

我正在循环查看订单列表,并将SkuQty添加到字典中。如果字典键已经存在,那么我想将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

3 个答案:

答案 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