SortedList - объединение двух списков с вычислениями - C#
Формулировка задачи:
Есть несколько списков двух типов:
A) SortedList<int, int>
B) SortedList<int, int>
Несколько списков типаA и один список типаB, в котором будет накапливаться информация по остальным спискам; значения ключей в списках типа1 могут совпадать, а могут и нет.
В результирующем списке типаB должны быть после обработки собраны ВСЕ ключи и обработанная информация по значениям из списоков типаА.
На примере двух списков типаА:
1) (1, 10) (4, 20) (5, 30)
2) (1, 8) (3, 10) (5, 1) (7, 0)
Результирующий список типаB должен получиться:
(1, 10+8) (3, 10) (4, 20) (5, 30+1) (7, 0)
Т.е. должно получиться вроде как объединение списков (Concat?, Join?), но с обработкой по сопадающим ключам.
Можно ли это сделать средствами SortedList просто перебрав в цикле все списки типаА?
Примечание: на самом деле у меня вместо простого суммирования значений будет более сложная обработка значений. Я её не указал, чтоб не усложнять пример
Решение задачи: «SortedList - объединение двух списков с вычислениями»
textual
Листинг программы
using System;
using System.Collections.Generic;
namespace ConsoleApplication17
{
class Program
{
static void Main(string[] args)
{
SortedList<int, int> list1=new SortedList<int, int>();
list1[1]=8;
list1[2]=9;
SortedList<int, int> list2 = new SortedList<int, int>();
list2[1] = 4;
list2[3] = 2;
SortedList<int, int> result = new SortedList<int, int>();
Append(list1, result);
Append(list2, result);
}
private static void Append(SortedList<int, int> list, SortedList<int, int> result)
{
foreach (KeyValuePair<int, int> p in list)
{
int s = 0;
result.TryGetValue(p.Key, out s);
result[p.Key] = s + p.Value;
}
}
}
}