Создание списка ключ / значение с более чем одним значением на ключ - PullRequest
0 голосов
/ 14 февраля 2012

мне нужен список ключей / значений с более чем одним значением на ключ!

Что я пробовал:

SortedList<string,List<int>> MyList = new SortedList<string,List<int>>();    

Но проблема в том, что я не могу добавить значения в списокв SortedList динамически?

foreach(var item in MyData)  { MyList.Add(item.Key,item.Value ????); }

Как я могу решить эту проблему?Есть ли уже список с этими функциями?

С уважением rubiktubik

Ответы [ 3 ]

2 голосов
/ 14 февраля 2012

В дополнение к действительному предложению Кирилла использовать Поиск:

var lookup = MyData.ToLookup(item => item.Key);

, а затем

foreach (var entry in lookup)
{
  string key = entry.Key;
  IEnumerable<int> items = entry;

  foreach (int value in items)
  {
    ...
  }      
}
2 голосов
/ 14 февраля 2012

Посмотрите на Lookup(Of TKey, TElement) класс, который

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

0 голосов
/ 14 февраля 2012

В качестве альтернативы ILookup вы можете использовать Dictionary<string,List<int>>.При добавлении / настройке элемента вы должны проверить, есть ли список для этого ключа или нет:

Dictionary<string,List<int>> MyList;
void AddItem(string key, int value){
List<int> values;
if(!MyList.TryGet(key, values)){
values= new List<int>();
MyList.Add(key, values);
}
values.Add(value);
}

Итерации по элементам:

foreach (var entry in MyList)
{
string key = entry.Key;
List<int> values = entry.Value;
}

Если значения для ключадолжно быть уникальным, чем вместо списка вы можете использовать HashSet .

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