我用的VB.net,我試圖從列表中,像這樣刪除對象項目: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)「命令,它將返回True,但列表中的項目數不會減少,並且該項目實際上未被刪除。
我唯一能想到的其他事情就是創建第二個列表並向其中添加有效的項目,但我想知道爲什麼.remove不起作用(但返回True)。
編輯:
如此看來,通過調用.ToList()我想提出一個副本,因此當我卸下襬臂()我是從拷貝刪除。我添加了.ToList(),因爲在遍歷它時無法從列表中刪除項目。
也試過:
For Each item As ContentData In itemsToRemove
If evidenceContentItems.Contains(item) Then
evidenceContentItems.Remove(item)
End If
Next
我再次得到卸下襬臂(項目)一個真實的回報,但仍算不下去。
「項目」是一個對象。你從副本中獲得物品但不是原來的物品。 –
詳細講解'ContentData'。它是一個值類型還是一個引用類型?你重寫了'Equals'和'GetHashCode'嗎? – sloth
ContentData是來自內容管理系統的對象。我沒有覆蓋Equals或GetHashCode。 –