【问题标题】:Updating a Dictionary by Key fails even when key found即使找到密钥,按密钥更新字典也会失败
【发布时间】:2013-01-04 13:39:26
【问题描述】:

这没有意义

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

所以,我正在循环遍历内容并检查密钥,在适用的情况下更新密钥,但遇到了最奇怪的问题

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

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

【问题讨论】:

    标签: arrays vb.net collections dictionary


    【解决方案1】:

    您只检查splitType1,还访问splitPay1 - 这可能是缺少的条目:

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

    【讨论】:

    • 我不认为sale("splitPay1") 是字典中的键
    • 我知道你来自哪里,但不是这样。 sale("splitPay1") 和 sale("splitType1") 来自数据库表。他们不可能不在。对不起,我会更新问题,因为那部分不清楚。
    • @JamieHartnoll - 你调试槽了吗?你检查了吗?
    • ARRGRHHHH 完全白痴!对不起....你是对的,我改变了血腥的表格行名!!!
    • 不敢相信我在这上面浪费了这么多时间……我去拿我的外套!
    猜你喜欢
    • 1970-01-01
    • 2023-01-12
    • 2018-09-22
    • 2021-01-04
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多