Title says it all, I'm having some trouble iterating through an arraylist I've made (songs) and removing a specific song once it's been found. I've confirmed that the locations are correct and have tried manually entering in a song's location to no avail.
Sub delete(location As String)
Dim tempS As Song
For Each tempS In songs
If tempS.getLocation().toLower().Equals(location) Then
songs.Remove(tempS)
End If
Exit For
Next
End Sub
This project is still very much in its beginning stage and the only thing a song has associated with itself is it's stored location (ei C:\Music\Albums\Once\Nemo.mp3). Many thanks!
There are a couple of issues in your code.
Firstly you are not comparing the same case because location does not have a .ToLower() after it.
Secondly you are potentially removing an item from your list whilst still iterating through it. This can cause issues.
You can improve this considerably by using linq. That way you can do it all in one line:
Public Sub DeleteByLocation(location As String)
songs.RemoveAll(Function(x) x.GetLocation().Equals(location, StringComparison.OrdinalIgnoreCase))
End Sub
Change RemoveAll
to Remove
to improve performance if you are certain that there will only be one matching location