【发布时间】:2015-09-25 23:24:55
【问题描述】:
我有一个结构数组。 它是这样声明的
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
【问题讨论】:
-
我编辑了您的问题以包含您在 OneFineDay 答案的 cmets 中提到的代码;但请下次尝试包含您尝试过的代码 - 即使它不起作用。现在,你能告诉我们你是如何填写
SongsList的吗? -
为什么对已经是字符串的变量调用
.ToString?
标签: arrays vb.net list sorting