2014-06-10 67 views
-1

如何將整個KeyValuePair傳遞給For循環?在For循環中設置KeyValuePair

Dim grouped As New Dictionary(Of [String], List(Of DataRow))() 
    For index = grouped.Count-1 To 0 Step -1 

    'How do I pass the entire KeyValuePair to the PopulateData function? 
    PopulateData(????) 
    Next 
+0

你的分組變量的類型是什麼? – pmcoltrane

+0

字典([String],列表(DataRow))() –

+0

如果你想傳遞KVP,你需要返回'For Each kvp As KeyValuePair ...'。但是這個方法在邏輯上應該只關心'List(DataRow)',即Value部分 – Plutonix

回答

3

你可以像這樣做,例如:

Sub Main() 
    Dim grouped As New Dictionary(Of [String], List(Of DataRow))() 
    For index = grouped.Count - 1 To 0 Step -1 
    PopulateData(New KeyValuePair(Of String, 
     List(Of DataRow))(grouped.Keys(index), grouped.Values(index))) 
    Next 
End Sub 

Sub PopulateData(kv As KeyValuePair(Of String, List(Of DataRow))) 
End Sub 

但是,你用這種方法拉伸.NET框架的限制,字典不應該被重複向前或向後。即使您決定迭代它,您的代碼也不應該依賴於元素的順序,否則它可能會在以後中斷。

+0

我不依賴於順序,我的數據被分組在最後一個由於某種原因,作爲偏好,我想迭代並輸出訂單中的輸入是 –

+0

我正在使用詞典將單元數據分組爲 –

+0

'我的數據因爲某種原因被分組到最後第一個'你怎麼知道它是如何分組在字典中?它沒有設置,特定訂單!@NickLaMarca – Plutonix