2013-04-29 58 views
0

我想製作一個多維的關聯數組。我想它,所以我可以有這樣的:使用字典的多維數組

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 
+0

給我們多一些關於如何在代碼中看到它的例子?要添加到它的電話和從中檢索的電話是什麼樣的? – RBarryYoung 2013-04-29 20:32:31

+0

我需要能夠存儲一個密鑰,例如一個日期,並在該日期內,我需要獲得每個類別的小時銷售。 (我不直接擔心查詢部分,一旦我得到這部分工作,我會弄清楚查詢。)我編輯了這個問題,以顯示我的工作。 – 2013-04-29 21:36:38

回答

0

調查Entity Framework它使對象超出你的數據庫。

MSDN EF

對於一個自定義的數組,你會發現一個Tuple有用。

+0

謝謝,這是很好的知道將來使用,但這個應用程序已經創建沒有它,我只是做了一個補充。 – 2013-04-29 21:40:03

+0

已更新的答案! – OneFineDay 2013-04-29 21:49:00

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列表。

0

詞典字典詞典是維護的噩夢,用於查詢和調試。

我建議有一個複合鍵,所以,而不是做3個查找,你只會做一個日期+小時+類別的字符串。例如,日期=星期一,小時= 9PM,類別=蘋果,你的密鑰是Monday:9PM:Apples(我選擇冒號作爲部分分隔符,但你可以選擇不同的字符)。

+0

我看到它可能是一場噩夢,但我正在創造它,循環而前進。我真的不需要查看任何東西。 – 2013-04-30 14:12:29

+0

@DonnieArcher:你能看到我建議的方法有缺點嗎?這不僅僅是更少的噩夢,即使你只做了一次,它也少了代碼。 – Neolisk 2013-04-30 14:16:40