Я пытаюсь создать массив хеш-таблиц.Я не знаю, является ли это лучшим решением, в PHP я бы просто сделал многомерный массив, но в .NET это не так просто.Я довольно новичок в VB, поэтому, если есть лучшее решение для этого, пожалуйста, объясните.
У меня есть 2 поля электронной почты для контакта, и у контакта может быть много полей.Я просто хочу загрузить первые два на странице редактирования для редактирования, какими бы они ни были.
Private Sub loadPrimaryContactEmails(ByVal db As CRMDataDataContext, ByVal contactID As Guid)
Dim q = (From ce In db.ContactEmails Where ce.ContactID = contactID Select ce).Take(2)
Dim Emails As Array
Dim count = 0
For Each email In q
Emails(count) = New Hashtable
Emails(count).Add("email", email.Email)
Emails(count).Add("label", email.Label)
Emails(count).Add("id", email.ContactEmailID)
count = count + 1
Next
txtPCEmail1.Text = Emails(0).Item("email")
txtPCEmail1Label.Text = Emails(0).Item("label")
lblEmail1ID.Text = Emails(0).Item("id")
txtPCEmail2.Text = Emails(1).Item("email")
txtPCEmail2Label.Text = Emails(1).Item("label")
lblEmail2ID.Text = Emails(1).Item("id")
End Sub
При первом обращении к массиву я получаю сообщение об ошибке:
txtPCEmail1.Text = Emails(0).Item("email")
Ошибка:
Object variable or With block variable not set.
Она собирается, поэтому ядумал, что это может сработать.Я не могу просто перебрать свой источник данных, потому что я должен явно установить поля текстового поля.Есть ли лучший способ сделать это?Или есть способ заставить работать массив хеш-таблиц?
РЕДАКТИРОВАТЬ - вот хороший код: Итак, я пошел с HybridDictionary ...
Private Sub loadPrimaryContactEmails(ByVal db As CRMDataDataContext, ByVal contactID As Guid)
Dim q = (From ce In db.ContactEmails Where ce.ContactID = contactID Select ce).Take(2)
Dim Emails As New HybridDictionary()
Dim count = 1
For Each email In q
Emails.Add("email" + NCStr(count), email.Email)
Emails.Add("label" + NCStr(count), email.Label)
Emails.Add("id" + NCStr(count), email.ContactEmailID)
count = count + 1
Next
txtPCEmail1.Text = Emails("email1")
txtPCEmail1Label.Text = Emails("label1")
lblEmail1ID.Text = Emails("id1")
txtPCEmail2.Text = Emails("email2")
txtPCEmail2Label.Text = Emails("label2")
lblEmail2ID.Text = Emails("id2")
End Sub
ТАК да, вродевзломать, но я не чувствую, что мне нужно создавать специальные методы просто для загрузки некоторых данных в словарь или массив или что-то еще.