Building a multidimensional array in vb.net

前端 未结 5 1887
离开以前
离开以前 2020-12-10 05:30

I\'m trying to build up a multidimensional array which will hold two bits of info for each record in a database e.g. id, description.

This is what I am currently doi

相关标签:
5条回答
  • 2020-12-10 05:41

    Try this

    Dim mArray(1,1) As String
    Dim i As Integer = 0
    While cmdReader.Read()
        mArray(i,0) = cmdReader.Item("id")
        mArray(i,1) = cmdReader.Item("description")
        i = i + 1
        ReDim Preserve mArray(i,1)
    End While
    
    0 讨论(0)
  • 2020-12-10 05:42

    Correct it by

    Dim mArray(,) As String = ""
    
    0 讨论(0)
  • 2020-12-10 05:55

    This works for me:

    Dim values As New List(Of Dictionary(Of String, String))()
    
    values.Add(New Dictionary(Of String, String)() From {{"quarter", q1.ToString}, {"year", y1.ToString}})
    values.Add(New Dictionary(Of String, String)() From {{"quarter", q2.ToString}, {"year", y2.ToString}})
    values.Add(New Dictionary(Of String, String)() From {{"quarter", q3.ToString}, {"year", y3.ToString}})
    values.Add(New Dictionary(Of String, String)() From {{"quarter", q4.ToString}, {"year", y4.ToString}})
    
    For Each value As Dictionary(Of String, String) In values
        Dim quarter As String = value("quarter")
        Dim year As String = value("year")
        Debug.Print(quarter & "/" & year)
    Next
    
    0 讨论(0)
  • 2020-12-10 05:58

    Why not rather make use of List Class and Dictionary Class

    You can rather then create a List of Dictionaries, with the key and value both strings. The key can then represent your key (id and description in your example, and the value can be what ever was stored).

    Something like

    Dim values As New List(Of Dictionary(Of String, String))()
    

    and then in the while loop something like

    values.Add(New Dictionary(Of String, String)() From { _
        {"id", cmdReader.Item("id")} _
    })
    values.Add(New Dictionary(Of String, String)() From { _
        {"description", cmdReader.Item("description")} _
    })
    

    You could then use foreach

    For Each value As Dictionary(Of String, String) In values
        Dim id As String = value("id")
        Dim description As String = value("description")
    Next
    

    Or a for

    For i As Integer = 0 To values.Count - 1
        Dim value As Dictionary(Of String, String) = values(i)
        Dim id As String = value("id")
        Dim description As String = value("description")
    Next
    
    0 讨论(0)
  • 2020-12-10 05:59

    The problem is that you are not initializing the array.

    This should work, until i will not reach the limits set in the initialization.

    Dim mArray(100,100) As String
    Dim i As Integer = 0
    While cmdReader.Read()
        mArray(i,0) = cmdReader.Item("id")
        mArray(i,1) = cmdReader.Item("description")
        i = i + 1
    End While
    

    But if the array limits are not known I suggest to follow astander's suggestion.

    0 讨论(0)
提交回复
热议问题