0

多次元連想配列を作成しようとしています。私はそれが欲しいので、私は次のようなものを持つことができます:

someVar(date)(hour)(category) = mssql クエリ

以下を使用して準備を試みていますが、配列にデータを追加するのに問題があります。

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

どんな助けでも大歓迎です。

-----編集: これが私が使用しているものです。希望どおりに動作します。なぜこれが悪い方法なのか、誰にもわかりますか?

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
4

3 に答える 3

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

于 2013-04-29T23:18:50.473 に答える
0

辞書の辞書の辞書は、クエリとデバッグを行うためのメンテナンスの悪夢です。

代わりに複合キーを使用することをお勧めします。そのため、3 つのルックアップを行う代わりに、日付 + 時間 + カテゴリの文字列に対して 1 つのルックアップを行うだけです。たとえば、date=Monday、hour=9PM、category=Apples の場合、キーはMonday:9PM:Apples(部品区切りとしてコロンを選択しましたが、別の文字を選択することもできます) です。

于 2013-04-30T01:05:26.987 に答える