Как перебирать словарь и добавлять элементы к его значениям - PullRequest
0 голосов
/ 29 января 2020

У меня есть словарь Словарь> , который я перебираю по его ключам и хотел бы добавить коллекцию дополнительных элементов, таких как SomeKindOfObject к значению. AddRange не работает - он не меняет значение этой записи. Смотрите мой код (более или менее):

Dictionary<int, IEnumerable<SomeObject>> myDictionary = setDictionary(); //Assume that this method populate the dictionary.
IEnumerable<int> keys = myDictionary.Keys;
foreach (int key in keys)
{
  myDictionary[key].ToList().AddRange(getListOfSomeObject()); // getListOfSomeObject returns IEnumerable<SomeObject>  
  //Or even
  myDictionary[key].ToList().concat(getListOfSomeObject()); 

}

значения myDictionary остаются такими, как есть, я хотел бы использовать метод AddRange вместо установки значения с объединенным списком исходного значения и выводом метод getListOfSomeObject

1 Ответ

3 голосов
/ 29 января 2020

ToList() создаст новый список. Если вы измените его, список, сохраненный в Dictionary, не будет изменен. Назначьте вновь созданный список на Dictionary.

Dictionary<int, IEnumerable<SomeObject>> myDictionary = setDictionary(); //Assume that this method populate the dictionary.
IEnumerable<int> keys = myDictionary.Keys;
foreach (int key in keys)
{
  var templist = myDictionary[key].ToList();
  templist.AddRange(getListOfSomeObject());
  myDictionary[key] = templist;

}

. Можно ли изменить тип словаря на Dictionary<int,List<SomeObject>>? Тогда вы можете изменить его напрямую.

...