Страницы

Поиск по вопросам

воскресенье, 7 июля 2019 г.

Как объединить 2 Dictionary в один новый?

Добрый день. Возник дурацкий вопрос: Есть 2 Dictionary. Нужно получить третий, который будет включать в себя все пары "ключ-значение" из первого и второго. Точно известно, что совпадения ключей в словарях нет.
Пробовал так - не получается.
Markers = new Dictionary(CreateCommonMarkers(vm)); Markers.Concat(UniqueMarkers); return Markers;
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);
Как видно, на входе получается третий словарь, который можно вернуть как результат.

Комментариев нет:

Отправить комментарий