从VB.net中的Dictionary中删除项

时间:2015-11-10 11:04:10

标签: vb.net dictionary foreach

我有这样的事情:

    Public Shared Property PinnedChannelConnectionIds() As Dictionary(Of Integer, List(Of String))
    Get
        If _pinnedChannelConnectionIds Is Nothing Then
            Return New Dictionary(Of Integer, List(Of String))
        Else
            Return _pinnedChannelConnectionIds
        End If
    End Get
    Set(value As Dictionary(Of Integer, List(Of String)))
        _pinnedChannelConnectionIds = value
    End Set
End Property

然后,在字典中有一些数据:

1,{“c1”,“c2”,“c3”}
2,{“c2”,“c4”,“c6”}
3,{“c3”,“c5”,“c1”}
4,{“c4”,“c3”,“c6”}

删除特定项目。从上面的字典中说“c2”。 我这样做:

For Each channelKeyValuePair As KeyValuePair(Of Integer, List(Of String)) In Channel.PinnedChannelConnectionIds
            For Each item As String In channelKeyValuePair.Value.ToList()
                If (item.Equals("c2")) Then
                    Channel.PinnedChannelConnectionIds(channelKeyValuePair.Key).Remove(item)
                End If
            Next
        Next

但它会抛出错误:枚举器可用于读取集合中的数据,但不能用于修改基础集合。

任何人都可以帮助我。 提前致谢!!

1 个答案:

答案 0 :(得分:0)

我建议像

这样的东西
For Each channelKeyValuePair As KeyValuePair(Of Integer, List(Of String)) In Channel.PinnedChannelConnectionIds
    channelKeyValuePair.Value.RemoveAll(Function(x) x = "C2")
Next

可能会奏效。没有必要迭代列表元素来查找和删除它们,这可能会导致您遇到的排序困难。