OK, now I see what you're getting at (I think). Yeah, it seems like what you want is a Generic.Dictionary(Of String, Generic.Dictionary(Of Integer, IITTrack)). Again, I'd say that hiding it inside a class would be a good idea. Then you could provide a an Item property something like this:
VB Code:
  1. Private tracksByAlbum As New Generic.Dictionary(Of String, Generic.Dictionary(Of Integer, IITTrack))
  2.  
  3. Public Property Item(ByVal albumName As String, ByVal trackID As Integer) As IITTrack
  4.     Get
  5.         Dim tracksByID As Generic.Dictionary(Of Integer, IITTrack) = Me.tracksByAlbum(albumName)
  6.  
  7.         If tracksByID Is Nothing Then
  8.             Return Nothing
  9.         Else
  10.             Return tracksByID(trackID)
  11.         End If
  12.     End Get
  13.     Set(ByVal value As IITTrack)
  14.          Dim tracksByID As Generic.Dictionary(Of Integer, IITTrack) = Me.tracksByAlbum(albumName)
  15.  
  16.         If tracksByID Is Nothing Then
  17.             tracksByID = New Generic.Dictionary(Of Integer, IITTrack)
  18.             Me.tracksByAlbum.Add(albumName, tracksByID)
  19.         End If
  20.  
  21.         tracksByID(trackID) = value
  22.     End Set
  23. End Property