2

我有一个inputList键值对列表,例如

X,10
X,30
Y,10

我想将它们处理成一个新的键值对列表,其格式类似于“初始列表中的键组件,包含该键的键的初始列表值的总和”例如

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。

4

1 回答 1

3

如果您可以返回一个新的 KeyValuePairs 列表而不是更新现有的列表,那么使用 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是 type List(Of KeyValuePair(Of String, Integer)),这将返回一个result相同类型的新对象,并按键汇总结果。

于 2012-08-23T17:42:33.630 回答