我需要做一些字段的比较和改组,(我来自更多的PHP背景和使用数组是完全不同的,正如在阅读很多东西后所建议的那样我知道VB.NET使用LIST和Dictionary更容易。
我有一个字典(字符串,字典(字符串,字符串)),填写得很好,但在我尝试读出之后,它总是空的....
下面我填写了一些内容。 var我在谈论它 matchesWolename VALUES部分内的fillDictionary。 我填写fillDictionary并将其添加到matchesWholename 之后我清除了它,因为它处于一个循环中,而且还有更多。Dim matchesTotal As New List(Of String)
Dim fillDictionary As New Dictionary(Of String, String)
Dim matchesWholename As New Dictionary(Of String, Dictionary(Of String, String))
Try
If ds.Tables("matchesWholename").Rows.Count > 0 Then
For Each dr As DataRow In ds.Tables("matchesWholename").Rows
If Not matchesWholename.ContainsKey(CStr(dr("key"))) Then
fillDictionary.Add("programme", CStr(dr("programme")))
fillDictionary.Add("remark", CStr(dr("remark")))
fillDictionary.Add("key", CStr(dr("key")))
fillDictionary.Add("displayname", CStr(dr("prop_value")))
Console.WriteLine("count before insert {0}", fillDictionary.Count)
matchesWholename.Add(CStr(dr("sanction_key")), fillDictionary)
End If
If Not matchesTotal.Contains(CStr(dr("key"))) Then
matchesTotal.Add(CStr(dr("key")))
End If
fillDictionary.Clear()
Next
End If
Catch ex As Exception
Console.WriteLine("Err: {0}", ex.Message)
End Try
稍后我尝试读出这样的内容,它什么都不返回.... 我实际上是否将filldictionary的副本发送到其中?或者我的clear()方法是否清除了里面的内容?
Dim pair As KeyValuePair(Of String, Dictionary(Of String, String))
Dim subpair As KeyValuePair(Of String, String)
For Each pair In matchesWholename
' Display Key and Value.
For Each subpair In pair.Value
Console.WriteLine("{0}, {1}, {2}", pair.Key, subpair.Key, subpair.Value)
Next
Next
答案 0 :(得分:2)
fillDictionary.Clear()
看起来有点可疑。您实际上是在For
循环的每次迭代中清除字典。