Discussion:
Best way to remove items from a List(Of ...)
(too old to reply)
BobRoyAce
2012-01-11 06:08:01 UTC
Permalink
Lets say that I have two classes, ClassA and ClassB. Further suppose
that ClassA has, as one of it's properties, a List(Of ClassB). For
example...

Public Class ClassA
Private _Property1 as integer
Private _Property2 as List(Of ClassB)

Public Property Property1 as integer
...
End Property

Public Readonly Property Property2 as List(Of ClassB)
...
End Property
End Class

Now, one of the properties in ClassB is IsToBeDeleted. What I want to
be able to do is to delete each of the ClassB items in the List(Of
ClassB) if their IsToBeDeleted property = True.

What is the best way to implement something like this?

I tried the following, but this doesn't work...

For Each oClassB As ClassB In _Property2
If (oAssociatedIso.IsToBeRemoved = True) Then
_AssociatedIsos.Remove(oAssociatedIso)
_ItemsWereRemovedFrom = True
End If
Next

Once an item is removed from the List, the collection has changes and
the Next statement raises an exception as a result.
Andrew Morton
2012-01-11 09:47:10 UTC
Permalink
Post by BobRoyAce
I tried the following, but this doesn't work...
For Each oClassB As ClassB In _Property2
If (oAssociatedIso.IsToBeRemoved = True) Then
_AssociatedIsos.Remove(oAssociatedIso)
_ItemsWereRemovedFrom = True
End If
Next
Once an item is removed from the List, the collection has changes and
the Next statement raises an exception as a result.
Try an ordinary For i=someList.Count-1 To 0 Step -1 loop.
--
Andrew
Loading...