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

294
06 ноября 2017, 19:31

Добрый день. Возник дурацкий вопрос: Есть 2 Dictionary. Нужно получить третий, который будет включать в себя все пары "ключ-значение" из первого и второго. Точно известно, что совпадения ключей в словарях нет.

Пробовал так - не получается.

        Markers = new Dictionary<string, string>(CreateCommonMarkers(vm));
        Markers.Concat(UniqueMarkers);
        return Markers;

CreateCommonMarkers - создается правильно
UniqueMarkers - создается правильно Markers получает первый словарь правильно. А вот Concat не срабатывает. На выходе - дубликат словаря, создаваемого CreateCommonMarkers(vm)
Соответственно вопрос: что я сделал не так?

P.S. сделать через foreach я могу, но может есть менее извращенный способ.

Answer 1

Если уверены, что совпадений ключей нет, то можно попробовать так:

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

Как видно, на входе получается третий словарь, который можно вернуть как результат.

READ ALSO
Удаление объекта после его создания при нажатии клавиши

Удаление объекта после его создания при нажатии клавиши

Я создаю два объекта при нажатии лкмПри нажатии на правую клавишу мыши мне нужно, чтобы они удалились

240
NHibernate не подключается с SQL Server

NHibernate не подключается с SQL Server

Осваивая NHibernate в связке с ASPNET, столкнулся с проблемой, что NHibernate не может подключиться с ошибкой: Сообщение = Не удается открыть базу данных...

265
Преинкремент и постинкремент

Преинкремент и постинкремент

Задали вопрос на учебе, что больше потребляет ресурсов ++i или i++Самостоятельно инфо не нашёл, прошу подсказать где искать

859
Как работает auto-property?

Как работает auto-property?

Имеется такой код :

245