2015-12-08 120 views
1

我有一個列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. 
+0

參考HTTP:// WWW。 dotnetperls.com/dictionary-vbnet – Sam1604

+0

嗨@ sam1604,我知道如何使用字典,但我不知道如何循環通過我的數據表條到達我需要的結果 – Yannis

回答

0

我假設你的數據存儲有點像這樣:

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每個ItemProductID映射(因爲我們想存儲產品ID,而不是整個項目然後我們調用ToList()來從該組中的項目清單

+0

很多很多謝謝,這正是我所需要的! – Yannis