У меня есть массив структуры. Он объявлен как этотКак я могу отсортировать массив структуры?
Public SongsList as New List(Of Song)
«Песня» это имя структуры. Он имеет 2 переменные: путь и имя; Мне интересно, как я могу отсортировать этот массив по имени.
Public Structure Song
Public Path as String
Public Name as String
End Structure
Я попробовал этот
ListBox1.Items.Clear()
Dim sorted = SongsList.OrderBy(Function(s) s.Name).ToList
Dim i As Integer
For i = 0 To sorted.Count - 1
ListBox1.Items.Add(sorted(i).Name.ToString)
Next
Но это бросает NullReferenceException
.
Это, как я добавляю детали к SongsList
Dim open As New OpenFileDialog
open.Title = "Add songs"
open.Filter = "MP3 Files(*.mp3)|*.mp3"
open.Multiselect = True
ListBox1.Items.Clear()
If open.ShowDialog = DialogResult.OK Then
For Each SelectedSong As String In open.FileNames
i += 1
Dim songToAdd As New Song
songToAdd.Path = SelectedSong.ToString
songToAdd.Name = GetSafeFileName(SelectedSong.ToString)
SongsList.Add(songToAdd)
ListBox1.Items.Add(SongsList(i).Path)
Next
End If
Я отредактировал ваш q uestion, чтобы включить код, упомянутый в комментариях ответа OneFineDay; но, пожалуйста, в следующий раз попробуйте включить код, который вы пробовали, даже если он не работает. Теперь вы можете рассказать нам, как вы заполняете «SongsList»? –
Почему вы вызываете '.ToString' для переменных, которые уже являются строками? – Enigmativity
Дубликат [Что такое исключение NullReferenceException и как его исправить?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) –