我需要一个键/值列表,每个键有多个值!
我尝试了什么:
SortedList<string,List<int>> MyList = new SortedList<string,List<int>>();
但问题是我无法动态地在SortedList中为List添加值?
foreach(var item in MyData) { MyList.Add(item.Key,item.Value ????); }
我该如何解决这个问题?是否已经有一个具有此功能的列表?
此致 rubiktubik
答案 0 :(得分:2)
查看Lookup(Of TKey, TElement)
课程,
表示每个映射到一个或多个值的键集合。
答案 1 :(得分:2)
补充Kirill关于使用Lookup的有效建议:
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 :(得分:0)
除了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;
}
如果某个键的值应该唯一而不是一个List,则可以使用HashSet。