-1

目前正在处理这一小段代码,并且想知道如何从列表框中删除重复项。不确定在查询中使用 When 语句是否会修复它。

Public Class frmLab37
    Dim artists() As String
    Const IDX_DATE As Integer = 0
    Const IDX_RANK As Integer = 1
    Const IDX_SONG As Integer = 2
    Const IDX_ARTIST As Integer = 3
    Private Sub frmLab37_Load(sender As Object, e As EventArgs) Handles Me.Load
        artists = IO.File.ReadAllLines("BillBoard Hot100 2001 to 2015.csv")
        Dim artistQuery = From people In artists
                          Let year = people.Split(","c)(IDX_DATE)
                          Let rank = people.Split(","c)(IDX_RANK)
                          Let song = people.Split(","c)(IDX_SONG)
                          Let artist = people.Split(","c)(IDX_ARTIST)
                          Order By artist Ascending
                          Select artist
        lstArtists.DataSource = artistQuery.ToList
        lstArtists.SelectedItem = Nothing
    End Sub
End Class
4

1 回答 1

0

如果您想要的是该列表中不同艺术家值的列表,那么忘记不是艺术家的东西。只需获取艺术家的价值观并致电Distinct

Dim distinctArtists = File.ReadLines(filePath).
                           Select(Function(s) s.Split(","c)(IDX_ARTIST)).
                           Distinct().
                           ToArray()

注意调用ReadLines而不是ReadAllLinesReadLines应该是默认值,您应该只ReadAllLines在需要随机/多次访问结果数组时使用。

编辑:

我倾向于更喜欢函数语法,但是,如果您更喜欢查询语法,那将如下所示:

Dim distinctArtists = (From s In File.ReadLines(filePath)
                       Select s.Split(","c)(IDX_ARTIST)
                       Distinct).ToArray()
于 2020-11-06T01:00:09.973 回答