vb.net存储多维数据的最简单方法

时间:2015-01-14 03:50:31

标签: arrays vb.net multidimensional-array

我想知道存储多维数据的最简单方法是什么

当我从数据库中检索记录时,我使用一个数组存储一些我将在以后使用的信息

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是会员ID,我将其用作第一维的键

我已经读过关于哈希表,字典,列表的内容 - 但我似乎找不到在多维风格中使用它们的好例子

如果可能的话,我也希望长度是动态的,当我删除索引时,其余的将填充它的位置 -

我还需要它有一个搜索方法来查找member_id是否已经在列表中

最简单的方法是什么?请回复..谢谢

2 个答案:

答案 0 :(得分: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来代替您的数组。

答案 1 :(得分: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