使用词典的多维数组

时间:2013-04-29 20:27:04

标签: vb.net

我正在尝试制作一个多维关联数组。我想要它所以我可以有类似的东西:

someVar(日期)(小时)(类别)= mssql查询

我正在使用以下内容进行尝试和准备,但在向阵列添加数据时遇到了问题。

Dim test As New Dictionary(Of Integer, Dictionary(Of String, String))
Dim test2 As New Dictionary(Of String, String)

非常感谢任何帮助。

- - - - 编辑: 这是我正在使用的,它按预期工作。 Doe ayone明白为什么这会是一个不好的方法呢?

Dim test As New Dictionary(Of Integer, Dictionary(Of String, String))
Dim SomeNum As Integer = 0
Dim someStr As String = "This is a string: "


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    While SomeNum < 100
        Dim someNum2 As Integer = 0
        Dim test2 As New Dictionary(Of String, String)

        While someNum2 < 100
            test2.Add(CType(someNum2, String), someStr & CType(someNum2, String))

            someNum2 += 1
        End While
        test.Add(SomeNum, test2)
        SomeNum += 1


    End While

    For Each kvp As KeyValuePair(Of Integer, Dictionary(Of String, String)) In test
        Dim ccc As String = ""
        Dim ddd As String = ""
        Dim v1 As String = CType(kvp.Key, String)
        Dim v2 As Dictionary(Of String, String) = kvp.Value

        lblOne.Items.Add("Key: " & v1)

        For Each kvp2 As KeyValuePair(Of String, String) In v2

            Dim v3 As String = kvp2.Key
            Dim v4 As String = kvp2.Value

            lblTwo.Items.Add("SubKey: " & v3 & " Value: " & v4)

            lblOne.Items.Add("")

        Next

        lblOne.Items.Add(v1 & " End--------------")
        lblTwo.Items.Add(v1 & " End--------------")
    Next

End Sub

3 个答案:

答案 0 :(得分:1)

创建一个具有“Date”,“HourlySales”,“Category”属性的类。

Public Class Sales
    Public Property SalesDate() As Date
    Public Property HourlySales() As Decimal
    Public Property Category() As String

    Public Sub New()
    End Sub

    Public Sub New(vSalesDate As Date, vHourlySales As Decimal, vCategory As String)
        SalesDate = vSalesDate
        HourlySales = vHourlySales
        Category = vCategory
    End Sub
End Class

创建Sales

类型的对象列表
Shared Function GetSales() As List(Of Sales)
        Dim SalesList As New List(Of Sales)

        Using connection As New SqlConnection(YourConnectionString)
            Dim cmd As SqlCommand = New SqlCommand("SelectSalesList", connection)
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Connection.Open()

            Dim reader As SqlDataReader = cmd.ExecuteReader()

            While reader.Read
                SalesList.Add(New Sales(reader("SalesDate"), reader("HourlySales"), reader("Category")))
            End While
        End Using

        Return SalesList
    End Function

您可以调用GetSales()函数返回Sales列表。

答案 1 :(得分:0)

查看Entity Framework它会从您的数据库中创建对象。

MSDN EF

对于自定义数组,您可能会发现Tuple有用。

答案 2 :(得分:0)

词典词典是一个维护噩梦,需要查询和调试。

我建议使用复合键,所以不要进行3次查找,而只需要为日期+小时+类别的字符串执行一次查找。例如,date = Monday,hour = 9PM,category = Apples,你的键是Monday:9PM:Apples(我选择冒号作为部件分隔符,但你可以选择不同的字符)。