LINQ查询空错误

时间:2017-11-19 13:48:44

标签: vb.net linq search

我正在进行电子邮件联系人搜索,我应该使用OpenFileDialog打开文本文件,然后将其拆分为数组并使用LINQ进行搜索。我有openFileDialog工作,但是当我运行LINQ查询时,我收到object reference not set to an instance of an object错误。选项推断已开启,据我所知,这与我教科书中的一些示例完全相同。谁能指出我正确的方向??? (textFile被定义为第一个按钮代码上方的类变量:“Dim textFile(2) As String”。

代码:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles BtnOpen.Click
    OpenFileDialog1.ShowDialog()
    textFile(2) = OpenFileDialog1.FileName
    lstOutput.DataSource = IO.File.ReadAllLines(textFile(2))
    lstOutput.SelectedItem = Nothing
End Sub

Private Sub btnNameSearch_Click(sender As Object, e As EventArgs) Handles btnNameSearch.Click
    Dim queryName = From line In textFile
                    Let data = line.Split(","c)
                    Let firstName = data(0)
                    Let lastName = data(1)
                    Let email = data(2)
                    Where firstName = txtName.Text
                    Select firstName, lastName, email
    lstName.DataSource = queryName.ToList
End Sub

编辑:第21行的代码中断“让数据= line.Split(”,“c)

1 个答案:

答案 0 :(得分:0)

您正在使用文件名作为LINQ查询的字符串。您需要自己使用文件内容。

将您的代码更改为以下内容:

Private lines() As String

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles BtnOpen.Click
    If OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
        textFile(2) = OpenFileDialog1.FileName
        lines = IO.File.ReadAllLines(textFile(2))
        lstOutput.DataSource = lines
        lstOutput.SelectedItem = Nothing
    End If
End Sub

Private Sub btnNameSearch_Click(sender As Object, e As EventArgs) Handles btnNameSearch.Click
    Dim queryName = From line In lines
                    Let data = line.Split(","c)
                    Let firstName = data(0)
                    Let lastName = data(1)
                    Let email = data(2)
                    Where firstName = txtName.Text
                    Select firstName, lastName, email
    lstName.DataSource = queryName.ToList
End Sub