我有一個列2列(clm1 = StoreID和clmn2 = ProductID)。 我需要遍歷此列表並創建一個字典(StoreID,List(of ProductID)) 我正在使用vb.net。你能幫我用我必須做的循環嗎? 清單數據是一樣的東西創建一個列表vb.net
StoreID ProductID
1 234
2 456
1 222
3 768
1 100
9 876
e.t.c.
我有一個列2列(clm1 = StoreID和clmn2 = ProductID)。 我需要遍歷此列表並創建一個字典(StoreID,List(of ProductID)) 我正在使用vb.net。你能幫我用我必須做的循環嗎? 清單數據是一樣的東西創建一個列表vb.net
StoreID ProductID
1 234
2 456
1 222
3 768
1 100
9 876
e.t.c.
我假設你的數據存儲有點像這樣:
Structure Item
Public StoreID As Integer
Public ProductID As Integer
End Structure
Dim l As List(Of Item)
這時你有兩種選擇。第一個是手工創建字典:
Dim dictionary As New Dictionary(Of Integer, List(Of Integer))
For Each item As Item In l
Dim subList As List(Of Integer)
Dim keyExists = dictionary.TryGetValue(item.StoreID, subList)
If keyExists Then
subList.Add(item.ProductID)
Else
subList = New List(Of Integer)
subList.Add(item.ProductID)
dictionary.Add(item.StoreID, subList)
End If
Next
在這裏,你只需迭代所有項目。檢查字典是否已經包含商店標識的條目。如果是這樣,只需添加產品ID。如果不是,請創建一個條目,然後添加產品ID。通過他們的StoreID
Dim dictionary = l.GroupBy(Function(item) item.StoreID) _
.ToDictionary(Function(group) group.Key, _
Function(group) group.Select(Function(item) item.ProductID) _
.ToList())
您第一組的元素:
如果你不是太具有性能而言,你可以使用下面的LINQ表達式來創建字典。然後,ToDictionary()
方法創建字典。它需要兩個參數。第一個是指定每個元素的鍵的函數。在這種情況下,我們希望將組的鍵用作字典鍵(這是商店ID)。第二個參數是插入字典中的值。首先,我們使用Select
每個Item
其ProductID
映射(因爲我們想存儲產品ID,而不是整個項目然後我們調用ToList()
來從該組中的項目清單
很多很多謝謝,這正是我所需要的! – Yannis
參考HTTP:// WWW。 dotnetperls.com/dictionary-vbnet – Sam1604
嗨@ sam1604,我知道如何使用字典,但我不知道如何循環通過我的數據表條到達我需要的結果 – Yannis