1
我不確定的確切的術語,但我試圖做的使用LINQ是「切換」字典的鍵與其子的鍵。使用LINQ切換父鍵與二維字典的子鍵
這是集合我有作爲輸入:
Key:HeaderID Value:
Key:ItemID Value:Object
Key:ItemID Value:Object
Key:ItemID Value:Object
Key:HeaderID Value:
Key:ItemID Value:Object
Key:ItemID Value:Object
Key:ItemID Value:Object
Key:HeaderID Value:
Key:ItemID Value:Object
Key:ItemID Value:Object
Key:ItemID Value:Object
這是我想作爲輸出的集合:
Key:ItemID Value:
Key:HeaderID Value:Object
Key:HeaderID Value:Object
Key:HeaderID Value:Object
Key:ItemID
Key:HeaderID Value:Object
Key:HeaderID Value:Object
Key:HeaderID Value:Object
Key:ItemID
Key:HeaderID Value:Object
Key:HeaderID Value:Object
Key:HeaderID Value:Object
我已經創建的代碼在VB.net:
Dim objInput As Dictionary(Of String, Dictionary(Of String, Object)) = fakefunction()
' ItemID -> HeaderID ColumnValue
Dim objOutput As New Dictionary(Of String, Dictionary(Of String, Object))
For Each strHeaderID As String In objInput.Keys
Dim objColumnValuesPerItem As Dictionary(Of String, Object) = objInput(strHeaderID)
For Each strItemID As String In objColumnValuesPerItem.Keys
Dim objColumnValue As Object = objColumnValuesPerItem(strItemID)
If Not objOutput.ContainsKey(strItemID) Then
objOutput.Add(strItemID, New Dictionary(Of String, Object))
End If
objOutput(strItemID).Add(strHeaderID, objColumnValue)
Next
Next
我問這個問題的原因是純粹的教育,我試圖用LINQ來獲得轉換爲正確的列表,只有我沒有創造任何非常複雜和長的LINQ語句。