Добавление ключа и значения в “словарный” словарь

235
14 ноября 2017, 22:12

Подскажите как добавить ключ и значение в словарь такого типо

public static Dictionary<string, Dictionary<string, int>> Dic = new Dictionary<string, Dictionary<string, int>>();

Такой способ работать не будит

Dic.Add("1234", "1234", 1234);
Answer 1

Если вложенный словарь уже существует:

Dic[key1][key2] = value;
Dic[key1].Add(key2, value);

Если нет:

Dic.Add(key1, new Dictionary<string, int> { { key2, value } });

Если вы не знаете существует ли он:

Dictionary<string, int> inner;
if (!Dic.TryGetValue(key1, out inner))
     Dic.Add(key1, inner = new Dictionary<string, int>());
inner[key2] = value;

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

static Dictionary<Tuple<string, string>, int> Dic = new Dictionary<Tuple<string, string>, int>();

Добавление в такой словарь будет довольно простым:

Dic.Add(Tuple.Create(key1, key2), value);

Получение значения будет выглядеть аналогично.

Если вы используйте последнюю версию C# - то также можно воспользоваться новым языковым средством:

static Dictionary<(string, string), int> Dic = new Dictionary<(string, string), int>();
Dic.Add((key1, key2), value);
Answer 2
Dic["1234"].Add("1234", 1234);

или

Dic["1234"]["1234"] = 1234;

При условии, что элемент с ключом "1234" уже существует, иначе, нужно его предварительно добавить:

Dic.Add("1234", new Dictionary<string, int>());

или

Dic["1234"] = new Dictionary<string, int>();

Либо сразу создаем внутренний словарь с добавленным элементом:

Dic["1234"] = new Dictionary<string, int> { ["1234"] = 1234 };
READ ALSO
c# - Как вставить изображение в ячейку excel?

c# - Как вставить изображение в ячейку excel?

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

212
Unity C# как освобождать оперативную память

Unity C# как освобождать оперативную память

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

278
c# следующий за курсором объект

c# следующий за курсором объект

Хочу реализовать следующую идею: При нажатии кнопки пикчер бокс начинает следовать за курсором со скоростью, заданной таймером (допусим...

216
C# / VS / Hosting - ошибка в работе с базой данных MS Sql

C# / VS / Hosting - ошибка в работе с базой данных MS Sql

C# / VS / Hosting - ошибка в работе с базой данных MS Sql

261