Instead of having three separate arrays for one item, you could indeed as other commenters have said, create a database, but if you don't want to go that far try this.
Create a structure at the top of your Form's class definition list this :-
Structure Song
Dim Name As String
Dim Genre As String
Dim Duration As Single
End Structure
This effectively creates a new Datatype.
Next create a list of this datatype like this :-
Dim Songs As New List(Of Song)
When you read your data from the file, instead of what you've included in your question, you can add the data to the list like this :-
Dim newSong As Song
newSong.Name = objReader.ReadLine()
newSong.Genre = objReader.ReadLine()
newSong.Duration = Convert.ToDouble(objReader.ReadLine())
Now that you have one list of all the data, you can search the list and return results as a new list of all the results. This is the function that does the searching and returning of a list :-
Private Function SearchSongsByGenre(searchGenre As String) As List(Of Song)
Dim returnList As New List(Of Song)
For Each searchSong As Song In Songs
If searchSong.Genre = searchGenre Then
returnList.Add(searchSong)
End If
Next
Return returnList
End Function
To use it in another sub, just create a list in the sub called.. say.. SearchResults :-
Dim SearchResults As New List(of Song)
Searchresults = SearchSongsByGenre("Rock")
Now you have a list of all the Songs that have the genre Rock
A lot safer than searching an array and getting data from 3 arrays that could become desynchronised.