VB字典包含值返回键
Posted
技术标签:
【中文标题】VB字典包含值返回键【英文标题】:VB dictionary contains value return key 【发布时间】:2012-12-08 10:59:21 【问题描述】:我有问题... 如果 containsvalue 的条件为真,我试图将其放入字符串字典键值列表中:
但是,这是不正确的:(
这是一个代码:
Private listID As New List(Of String) ' declaration of list
Private dictionaryID As New Dictionary(Of String, Integer) ' declaration of dictionary
'put a keys and values to dictionary
dictionaryID.Add("first", 1)
dictionaryID.Add("second", 2)
dictionaryID.Add("first1", 1)
If dictionaryID.ContainsValue(1) Then ' if value of dictinary is 1
Dim pair As KeyValuePair(Of String, Integer)
listID.Clear()
For Each pair In dictionaryID
listID.Add(pair.Key)
Next
End If
现在,列表必须有两个元素... -> "first" 和 "first1"
你能帮帮我吗? 非常感谢!
【问题讨论】:
但是你正在遍历整个字典,它有 2 个元素,为什么结果只有一个? 不清楚什么没有按预期工作。 【参考方案1】:您正在遍历整个字典并将所有元素添加到列表中。您应该在For Each
中添加一个 if 语句或使用这样的 LINQ 查询:
If listID IsNot Nothing Then
listID.Clear()
End If
listID = (From kp As KeyValuePair(Of String, Integer) In dictionaryID
Where kp.Value = 1
Select kp.Key).ToList()
使用 if 语句:
listID.Clear()
For Each pair As KeyValuePair(Of String, Integer) In dictionaryID
If pair.Value = 1 Then
listID.Add(pair.Key)
End If
Next
【讨论】:
非常感谢...现在可以使用了!【参考方案2】:我的 VB.Net 有点生锈,但看起来你正在添加所有这些,无论它们的值是否为 1。
Private listID As New List(Of String) ' declaration of list
Private dictionaryID As New Dictionary(Of String, Integer) ' declaration of dictionary
'put a keys and values to dictionary
dictionaryID.Add("first", 1)
dictionaryID.Add("second", 2)
dictionaryID.Add("first1", 1)
If dictionaryID.ContainsValue(1) Then ' if value of dictinary is 1
Dim pair As KeyValuePair(Of String, Integer)
listID.Clear()
For Each pair In dictionaryID
If pair.Value = 1 Then
listID.Add(pair.Key)
End If
Next
End If
【讨论】:
以上是关于VB字典包含值返回键的主要内容,如果未能解决你的问题,请参考以下文章