在2D数组中搜索分隔的文本文件

时间:2016-10-12 09:12:39

标签: vb.net

我已经分隔了一个文本文件并将其放入一个2D数组中。然后,我试图找出数组是否包含产品ID(在文本框中输入)。但是,我用来尝试搜索数组并显示名称的代码不起作用。 文本文件说: 1,弗朗西斯 2,艾玛

这是我的代码:

Public Class Form1
    Dim filename As String
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        filename = "names.txt"

    End Sub

    Private Sub btnsearch_Click(sender As Object, e As EventArgs) Handles btnsearch.Click


        filename = "names.txt"
        FileOpen(1, filename, OpenMode.Input,,,)

        Dim lines() As String = IO.File.ReadAllLines("names.txt")
        Dim values(lines.Length - 1, 1) As String
        For i As Integer = 0 To lines.Length - 1
            Dim parts() As String = lines(i).Split(","c)
            values(i, 0) = parts(0)
            values(i, 1) = parts(1)
        Next

        Dim ID As String
        ID = txtidsearch.Text

        Dim line As String

        Do While Not EOF(1)
            line = LineInput(1)

            If values().Contains(ID) Then
                lblid.Text = line
                Application.DoEvents()
                GoTo line1
            ElseIf EOF(1) = True
                MsgBox("Not Found")

            End If
        Loop
line1:
        FileClose(1)

    End Sub
End Class

提前致谢

1 个答案:

答案 0 :(得分:1)

我要做的是创建一个班级来吸引你的员工。从长远来看,这将使它变得更容易。 首先创建一个Person类: Imports System.Collections.ObjectModel 公共类人员    公钥作为字符串    Public Sub New(ByVal id As Integer,                   ByVal名称为字符串,                   ByVal形式为String)        _id = id        _name =名字        _form = form    结束子    私有_id为整数    Public ReadOnly Property Id()As Integer        得到            返回_id        结束了    结束财产    Private _name As String    Public ReadOnly属性Name()As String        得到            返回_name        结束了    结束财产    Private _form As String    Public ReadOnly Property Form()As String        得到            返回_form        结束了    结束财产    结束班 现在创建一个People类,它将是一个容纳每个Person的集合: 公共阶层人     继承KeyedCollection(Of String,Person)     受保护的覆盖函数GetKeyForItem(ByVal item As Person)As String         退货。钥匙     结束功能 结束班 然后我会改变这段代码: 昏暗值(lines.Length - 1,1)As String 对于i As Integer = 0 To lines.Length - 1     Dim parts()As String = lines(i).Split(“,”c)     值(i,0)=部分(0)     值(i,1)=部分(1) 下一个 对此: 把我的人视为新人 对于i As Integer = 0 To lines.Length - 1     Dim parts()As String = lines(i).Split(“,”c)     myPeople.Add(新人(部分(0),部分(1),部分(2))) 下一个 请注意,我正在向People集合类添加一个新的Person类。 我会替换这段代码: Dim line As String 做不做EOF(1)     line = LineInput(1)     如果是values()。包含(ID)那么         lblid.Text = line         Application.DoEvents()         GoTo line1     ElseIf EOF(1)= True         MsgBox(“未找到”)     万一 环 第1行: 有了这个: Dim filteredLines =来自myPeople的人                     people.Id = ID                     选择人 如果filteredLines IsNot Nothing AndAlso filteredLines.Count = 1那么     Label1.Text = filteredLines(0).Name 万一 最后一段代码是LINQ:   添加到.NET Framework的通用查询工具适用于所有信息源,而不仅仅是关系数据或XML数据。此工具称为.NET语言集成查询(LINQ)。 使用LINQ,我们可以像使用类似语法的数据库表一样查询People集合类。在这里,我选择ID匹配的所有人。然后我检查以确保在分配值之前,filteredLines实际上有一个Person。