2013-01-21 61 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」)來自數據庫表。他們不能在那裏。對不起,我會更新這個問題,因爲那部分不清楚。 –