2012-08-23 2 views
2

나는처리 목록

X,10 
X,30 
Y,10 

내가 처음 목록에서 "핵심 구성 요소와 같은 형식의 키 - 값 쌍의 새 목록으로 그들을 처리하려는, 합계와 같은 키 값 쌍의 목록 inputList이 해당 키가 포함 된 키의 초기 목록 값 " 예 :

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를 사용하고 있습니다.

답변

3

당신이 KeyValuePairs의 새로운 목록을 반환 할 수 있다면 아마 가장 간단한 방법이 될 것이다 LINQ를 사용하는 대신 업데이트 한 기존 : inputList 유형 List(Of KeyValuePair(Of String, Integer))이다 가정

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() 

,이 새로운 객체 result의를 반환합니다 키에 의해 합산 된 결과와 동일한 유형.

관련 문제