2015-01-14 2 views
0

я задаюсь вопросом, что это самый простой способ для хранения многомерных данныхvb.net простой способ для хранения многомерных данных

, когда я извлечения записей из базы данных, я использую массив для хранения информации, что я буду использовать позже, как этот

rowCtr = 0 
For Each dr As DataRow In dt.Rows 
    md(rowCtr, 0) = dr("member_id").ToString 
    md(rowCtr, 1) = dr("full_name").ToString 
    md(rowCtr, 2) = dr("status").ToString 
    md(rowCtr, 3) = dr("archived").ToString 

    ... 

    rowCtr = rowCtr + 1 
Next 

для доступа к данным конкретного члена, я использую этот

'first i loop through the md array to get the array index (ind) of a member 
'then, i can get the data of a member by using this 
md(ind, 0) 'To get the id 
md(ind, 1) 'To get the full name 

это своего рода трудно, потому что я всегда нужно знать и указать индекс

я хочу, чтобы это было так

md("443", "full_name") 'to get the full name 
md("443", "status") 'to get the status 

где 443 является идентификатор члена, я использую его в качестве ключа первого измерения

я прочитал о хеш-таблицы, словарь, список - но я не могу найти хороший пример использования их в многомерном стиле

, если это возможно, я также хочу, чтобы длина быть динамичной, и когда я удалить индекс, остальное заполнит это место -

Мне также нужен он, чтобы найти метод поиска, если member_id уже находится в списке

Что это самый простой способ сделать это? пожалуйста ответ .. спасибо

ответ

2

Не беспокоить копирование данных в массив - просто использовать DataTable непосредственно:

Dim drMatch() As DataRow = dt.Select("member_id='443'") 
If drMatch.GetUpperBound(0) >= 0 Then 
    MsgBox(drMatch(0).Item("full_name").ToString) 
End If 

Если вы собираете данные из различных источников в массив, я бы определю новый в памяти DataTable для использования вместо вашего массива.

+0

спасибо, человек я попробую это – jks

1

если у вас есть, чтобы сохранить его как массив (не знаю, почему вы бы) вы могли бы использовать ENUM:

Enum Table1 
    Member_ID = 1 
    Full_Name = 2 
    Status = 3 
    archived = 4 
End Enum 

, то в массиве вы можете сделать это:

md("443", Table1.Full_Name) 'to get the full name 
    md("443", Table1.Status) 'to get the status 
+0

o, спасибо, что рассказал мне о Enum, я мог бы использовать его в будущем. – jks

Смежные вопросы