我有一个列表inputList
的键值对,如
X,10
X,30
Y,10
我希望将它们处理成一个新的键值对列表,其格式类似于"来自初始列表的关键组件,包含该键的键的初始列表值的总和" E.g。
X,40
Y,10
这种方法有用吗?我不知道实际使用的方法。此外,我不认为我可以更改现有键值对的值,因此我可能必须从输出列表中删除现有键并添加一个带有求和值的新键。
For each inputPair in inputList
If outputList.Contains(pair with Key = inputPair.Key)
outputList.Item(Key = inputPair.Key).value = (inputPair.value + outputList.Item(Key = inputPair.Key).value)
Else
outputList.Add(New pair = inputPair.Key, inputPair.Value)
我愿意使用LINQ。
答案 0 :(得分:3)
如果你可以返回一个新的KeyValuePairs列表而不是更新现有的ListQ,那么使用LINQ可能是最简单的方法:
Dim result = _
(From kvp In inputList
Group kvp By kvp.Key Into Group
Select New KeyValuePair(Of String, Integer)( _
Key, Group.Sum(Function(kvp) kvp.Value))).ToList()
假设inputList
的类型为List(Of KeyValuePair(Of String, Integer))
,则会返回相同类型的新对象result
,并按键加总结果。