Добрый день. Возник дурацкий вопрос:
Есть 2 Dictionary. Нужно получить третий, который будет включать в себя все пары "ключ-значение" из первого и второго. Точно известно, что совпадения ключей в словарях нет.
Пробовал так - не получается.
Markers = new Dictionary
CreateCommonMarkers - создается правильно
UniqueMarkers - создается правильно
Markers получает первый словарь правильно.
А вот Concat не срабатывает. На выходе - дубликат словаря, создаваемого CreateCommonMarkers(vm)
Соответственно вопрос: что я сделал не так?
P.S. сделать через foreach я могу, но может есть менее извращенный способ.
Ответ
Если уверены, что совпадений ключей нет, то можно попробовать так:
var dict1 = Enumerable.Range(0,10).ToDictionary(x=>x);
var dict2 = Enumerable.Range(15,10).ToDictionary(x=>x);
Для объединения словарей можно использвать методы Union или Concat. Разница между ними только в том, что Union удаляет доубликаты, что в данном контексте не требуется. Для маленьких словарей нет разницы, какой из методов использовать, для больших, как мне кажется, Concat будет работать быстрей.
var combined_version_1 = dict1.Union(dict2).ToDictionary(x=>x.Key, x=>x.Value);
var combined_version_2 = dict1.Concat(dict2).ToDictionary(x=>x.Key, x=>x.Value);
Как видно, на входе получается третий словарь, который можно вернуть как результат.
Комментариев нет:
Отправить комментарий