我正在进行电子邮件联系人搜索,我应该使用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)
答案 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