我有一个列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