开发者

VB.NET: I Cant find the index of an array

This is the code for my array (which is working)

Public numUsers As Integer
Public fNameUsers As String = ("..\..\..\users.txt")
Public UserRecords As Usersclass() 'note... this line is in a module '

reader = New System.IO.StreamReader(fNameUsers)
numUsers = 0

   'Split the array up at each delimiter of "," and add new objects '
            Do While reader.Peek <> -1
                ReDim Preserve UserReco开发者_如何学JAVArds(numUsers)
                oneline = reader.ReadLine
                fields = oneline.Split(",")
                UserRecords(numUsers) = New Usersclass
                UserRecords(numUsers).AccountNumber = fields(0)
                UserRecords(numUsers).CourseName = fields(1)
                UserRecords(numUsers).FirstName = fields(2)
                UserRecords(numUsers).LastName = fields(3)
                UserRecords(numUsers).DOB = fields(4)
                UserRecords(numUsers).Email = fields(5)
                UserRecords(numUsers).CourseProgress = (6)
                UserRecords(numUsers).AdminCheck = fields(7)

                numUsers = numUsers + 1

            Loop
            reader.Close()

My problem is that I don't know how to lookup the index of an array where the .accountNumber = a variable. For example the acccountNumber is 253, what is the code to find the index this relates to????

Thanks in advance


You would be better off dropping the use of arrays and instead look at dictionary objects.

A dictionary in laymans terms is very similar to an array but you can locate an object using a key, in your case the account number.

             Dim UserRecords as  New Dictionary(Of String, Usersclass)
             Dim UserRecord as Userclass
             Do While reader.Peek <> -1

                oneline = reader.ReadLine
                fields = oneline.Split(",")

                'Populate your class
                UserRecord = New Usersclass
                UserRecord.AccountNumber = fields(0)
                UserRecord.CourseName = fields(1)
                UserRecord.FirstName = fields(2)
                UserRecord.LastName = fields(3)
                UserRecord.DOB = fields(4)
                UserRecord.Email = fields(5)
                UserRecord.CourseProgress = (6)
                UserRecord.AdminCheck = fields(7)

                'Add to the dictionary here
                UserRecords.Add (fields(0),UserRecord)

            Loop

            ''Then find your UserRecord by the accountnumber e.g
            UserRecord = UserRecords("253")


Write a search function, loop through the Array and return the index if you've found the specified record. Or you use a Dictionary, like

  Public UserRecords As New Dictionary(Of Integer, Usersclass)

which you could use like this

  Dim desiredUser As Usersclass = UserRecords(hisAccountNumber)


A Dictionary object is probably exactly what you're looking for. It let's you set you own key innstead of using an array index. I don't write much VB but here's what it would look like in c#:

//Create the dictionary
Dictionary<int, Account> userRecords = new Dictionary<int, Account>();

//Add an account to the dictionary
userRecords.Add( accountNumber, account );

//Get an accoutn out of the dictionary
Account account = userRecords[accountNumber];


Do While reader.Peek <> -1
                    ReDim Preserve UserRecords(numUsers)
                    oneline = reader.ReadLine
                    fields = oneline.Split(",")
                    UserRecords(numUsers) = New Usersclass
                    UserRecords(numUsers).AccountNumber = fields(0)
                    UserRecords(numUsers).CourseName = fields(1)
                    UserRecords(numUsers).FirstName = fields(2)
                    UserRecords(numUsers).LastName = fields(3)
                    UserRecords(numUsers).DOB = fields(4)
                    UserRecords(numUsers).Email = fields(5)
                    UserRecords(numUsers).CourseProgress = fields(6)
                    UserRecords(numUsers).AdminCheck = fields(7)
                    UserRecords(numUsers).password = fields(8)

                    numUsers = numUsers + 1

                Loop
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜