Добавить больше значений к тому же ключу в словаре (C # 3.0) - PullRequest
1 голос
/ 28 мая 2010

У меня есть словарь, как

public Dictionary<DateTime, Dictionary<string, string>> dicCollection 

Как добавить дополнительные значения к тому же ключу в этом словаре?

Использование C # 3.0

Ответы [ 5 ]

3 голосов
/ 28 мая 2010

Если вам нужно несколько значений для одного ключа, вам нужно поместить значения в коллекцию или создать объект, который содержит все необходимые вам элементы данных.

Возможно, проще всего изменить ваше значение на Список <>:

public Dictionary<DateTime, List<Dictionary<string, string>>> myDictionary;
2 голосов
/ 28 мая 2010

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

if(dicCollection.ContainsKey(someDateTime))
    dicCollection[someDateTime].Add("key","value");
else
{
    Dictionary<string, string> newInner = new Dictionary<string, string>();
    newInner.Add("key","value");
    dicCollection.Add(someDateTime, newInner);
}

Это обеспечит, что при добавлении нового ключа во внешний словарь внутренний словарь не будет иметь значение null (если он будет нулевым, вызов Add приведет к исключению нулевой ссылки).

0 голосов
/ 28 мая 2010

Следующий код ищет запись во внешнем словаре и добавляет новую запись в свой внутренний словарь. Это то, что вы хотите?

dicCollection[specificDateValue].Add(newKey, newValue)

Имейте в виду, что сначала вы должны проверить существование specificDateValue, вызвав dicCollection.ContainsKey(specificDateValue), а затем сделать то же самое во внутреннем словаре, вызвав его метод ContainsKey с newKey.

0 голосов
/ 28 мая 2010

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

Возможно, вы захотите реализовать тип значения как коллекцию. Таким образом, вы можете получить более одного значения, связанного с одним ключом. Таким образом, вы можете определить это как, скажем, список объектов для значения:

Dictionary<String,List<Object>> myDictionary;

Я бы так и сделал.

0 голосов
/ 28 мая 2010

вы можете объявить словарь, где значения хранятся в списке. Нечто похожее на:

Dictionary<string,List<int>> dict ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...