我正在使用 VB.net 并试图从列表中删除一个对象项,如下所示:
Dim evidenceContentItems As List(Of ContentData) = contentApi.GetList(contentCriteria)
For Each item As ContentData In evidenceContentItems.ToList()
Dim contentMetaList() As Ektron.Cms.CustomAttribute = metaApi.GetContentMetadataList(item.Id).AttributeList
For Each metaItem As CustomAttribute In contentMetaList.ToList()
If metaItem.Value <> "-1" Then
evidenceContentItems.Remove(item)
End If
Next
Next
如果我在“evidenceContentItems.Remove(contentItem)”命令上放置一个 QuickWatch,它会返回 True,但列表中的项目数不会下降,并且该项目实际上并未被删除。
我能想到的唯一另一件事是创建第二个列表并向其中添加有效项目,但我想了解为什么 .remove 不起作用(但返回 True)。
编辑:
因此,似乎通过调用 .ToList() 我正在制作副本,因此当我 .Remove() 时,我正在从副本中删除。我添加了 .ToList() 因为在您遍历它时无法从列表中删除一个项目。
也试过:
For Each item As ContentData In itemsToRemove
If evidenceContentItems.Contains(item) Then
evidenceContentItems.Remove(item)
End If
Next
我再次从 .Remove(item) 获得了真正的回报,但计数仍然没有下降。