2013-01-21 119 views
1

这没有意义即使找到密钥,密钥更新失败

我有一系列的数据字典,我试图创建另一个。

所以,我通过东西循环和检查键,更新键适用,但遇到了奇怪的问题

If completeDictionary.ContainsKey(sale("splitType1")) Then 
    completeDictionary(sale("splitType1")) += (sale("splitPay1") - pxValues) 
Else 
    completeDictionary.Add(sale("splitType1"), (sale("splitPay1") - pxValues)) 
End If 

在这里,我们检查,如果在completeDictionary一键存在,这个名字sale("splitType1")那么如果密钥存在,则更新它的值,如果没有,则添加一个新值。

这应该做工精细,但它似乎是找到关键,但不能更新它,我得到这个错误:

The given key was not present in the dictionary. 

,这指的是线路:

completeDictionary(sale("splitType1")) += (sale("splitPay1") - pxValues) 

但是,如果钥匙不存在,它不应该跑这条线,因此它之前的If

completeDictionary是通过数组循环创建:

Dim completeDictionary As New Generic.Dictionary(Of String, Double) 
For Each Type as string In paymentTypes << paymentTypes is simply an array 
    completeDictionary.Add(Type, 0.0) 
Next 

这个令人沮丧的问题任何帮助非常感谢!

回答

0

你只检查splitType1,还访问splitPay1 - 这可能是丢失的条目:

completeDictionary(sale("splitType1")) += (sale("splitPay1") - pxValues) 
+0

我不认为'卖(“splitPay1”)'在字典中 – AbZy

+0

@AbZy的关键 - 确实如此。 – Oded

+0

我明白你来自哪里,但事实并非如此。销售(“splitPay1”)和销售(“splitType1”)来自数据库表。他们不能在那里。对不起,我会更新这个问题,因为那部分不清楚。 –