【问题标题】:Dictionary and For loop issues in VBVB 中的字典和 For 循环问题
【发布时间】:2013-06-15 22:14:13
【问题描述】:

如果这是我的字典,我如何获取字典数组中的每个值。

        rebDictionary= New Dictionary(Of String, String())

    rebDictionary.Add("wrd", {"yap", "tap"})

我试过For Each rtbval As String In rebDictionary.value

但这根本不起作用

【问题讨论】:

  • 您的意思是您想要字典的Values 列表中所有arrays 中的所有strings?另外:它以什么方式不起作用?您是否收到错误,或者结果不是您所期望的?

标签: arrays vb.net visual-studio for-loop dictionary


【解决方案1】:

values 集合属性被命名为Values,所以试试这个:

For Each rtbval As String() In rebDictionary.Values

但是,您将遍历 String() 的集合,因为您的字典是 Of(String, String())

您可以遍历键(String):rebDictionary.Keys 或使用 LINQ SelectMany 遍历从字典 Values 中提取的扁平字符串列表:

For Each rtbval as String In rebDictionary.Values.SelectMany(Function(x) x)

【讨论】:

  • 除了Values 不是String,它们是String() - 我不认为它很清楚预期的结果是什么。
  • @DanPuzey 你说得对!已经更新了我的答案以在此处提供一些其他可能的方法。
  • 修复了您的第二个示例,以便按照您的建议实际使用 SelectMany :-)
【解决方案2】:

以下代码遍历所有键和值。您可以选择您想要/不想要的任何部分:

    For Each kvp As KeyValuePair(Of String, String()) In rebDictionary
        Debug.WriteLine("Key:" + kvp.Key)
        For Each stringValue As String In kvp.Value
            Debug.WriteLine(" Value:" + stringValue)
        Next
    Next

可以只遍历键:

    For Each key As String In rebDictionary.Keys
        Debug.WriteLine("Key:" + key)
    Next

通过值:

    For Each value As String() In rebDictionary.Values
        For Each stringValue As String In value
            Debug.WriteLine("value:" + stringValue)
        Next
    Next

但是执行其中任何一个都可能不如您不知道相应的键或值有用,而且我怀疑遍历键值对可能会慢得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    • 2017-07-21
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多