Подскажите пожалуйста, как заполнить такой словарь?
Dictionary<string, Dictionary<int, string>> dict = new Dictionary<string, Dictionary<int, string>>();
for (int i = 0; i < mas.GetLength(0); i++)
for (int j = 0; j < mas.GetLength(1); j++)
if (!dict.ContainsKey(mas[i, 0])) dict.Add(mas[i, 0], new Dictionary<int, string>() { { i, null } });
else dict[mas[i,0], new Dictionary<int, string>() { { i, null } };
При инициализации:
var dict = new Dictionary<string, Dictionary<int, string>>
{
{"key", new Dictionary<int, string> {[1] = "val 1", [2] = "val 2"}}
};
Добавление нового элемента:
dict.Add("key", new Dictionary<int, string>{[1] = "val 1", [2] = "val 2"});
Обращение к уже существующему ключу и добавление в него нового значения:
dict["key"].Add(3, "val 3");
Как изменить значение key/value?
Ключ менять - плохая затея, ибо суть словаря в том, что Key имеет уникальное значение, по которому идет работа с его value. Но если хочется, то мы должны сохранить value старого ключа, удалить старый ключ и записать новое значение с новым ключом. Для упрощения можно сделать такую "приблуду" (с En SO):
public static void UpdateKey<TKey, TValue>(this IDictionary<TKey, TValue> dic, TKey fromKey, TKey toKey)
{
TValue value = dic[fromKey];
dic.Remove(fromKey);
dic[toKey] = value;
}
Вызов:
dict["key"].UpdateKey(1, 2);
Значение - а вот с ним полегче и правильней будет. Код будет примерно таким:
dict["key"]["key 2"] = 1000;
Кстати! Если вы пишите value в не существующий ключ, то у вас он создастся. Это еще как один метод добавления значений в словарь.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости