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 の新しい List を返すことができる場合は、おそらく 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 に答える