处理键值对的列表

时间:2012-08-23 17:29:40

标签: vb.net tuples key-value

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

1 个答案:

答案 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,并按键加总结果。