Двойной словарь

250
19 мая 2018, 12:00

Подскажите пожалуйста, как заполнить такой словарь?

        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 } };
Answer 1

При инициализации:

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 в не существующий ключ, то у вас он создастся. Это еще как один метод добавления значений в словарь.

READ ALSO
List in List C# ASP.Core

List in List C# ASP.Core

Подскажите как правельно вложить List в модель с присвоением значений из модели - для формирования JsonResult в MasterDetail

246
Ошибка при использовании await

Ошибка при использовании await

Немного переделала

260
Unity хранение строк в одном файле

Unity хранение строк в одном файле

Делаю средний проектЗамаячила на горизонте необходимость перевести его на другой язык

261
Установка службы Windows

Установка службы Windows

При попытке установить службу получаю следующую ошибку:

335