我有这样的事情:
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
但它会抛出错误:枚举器可用于读取集合中的数据,但不能用于修改基础集合。
任何人都可以帮助我。 提前致谢!!
答案 0 :(得分:0)
我建议像
这样的东西For Each channelKeyValuePair As KeyValuePair(Of Integer, List(Of String)) In Channel.PinnedChannelConnectionIds
channelKeyValuePair.Value.RemoveAll(Function(x) x = "C2")
Next
可能会奏效。没有必要迭代列表元素来查找和删除它们,这可能会导致您遇到的排序困难。