작동하지 않는 일반적인 목록에서 항목을 제거하고과 같이 목록에서 객체 항목을 제거하는 것을 시도하고있다 :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()를 호출하여 나는 복사를하고있어 내가 .Remove() 나는 복사본에서 제거하고 때 것으로 보인다. 목록을 반복하는 동안 목록에서 항목을 제거 할 수 없으므로 .ToList()를 추가했습니다.
For Each item As ContentData In itemsToRemove
If evidenceContentItems.Contains(item) Then
evidenceContentItems.Remove(item)
End If
Next
가 다시 나는 .Remove (항목)에서 진정한 수익을 얻을 여전히 수는 내려 가지 않습니다
도 노력했다.
"항목"객체는 다음과 같습니다
는 또한
ContentData
클래스의 변경을 필요로하지 않는RemoveAll
방법을 사용할 수 있습니다. 당신은 복사하지만 원래 아이템과 동등하지 않은 아이템을 얻습니다. –'ContentData'에 대해 더 자세히 알려주십시오. 값 유형 또는 참조 유형입니까? 'Equals'와'GetHashCode'를 오버라이드 했습니까? – sloth
ContentData는 콘텐츠 관리 시스템의 개체입니다. 나는 Equals 나 GetHashCode를 overidden하지 않았다. –