我想填写一个列表
dictionary.timeslot_events.Add(t, new List<int>() { i });
但它给了我一个例外,即已经添加了更多具有相同键的项目
我还试图用添加函数timeslot_events.Add(t, new List<int>() { i });
填充列表,但它给了我一个例外,即字典中没有给定的键。
请指导我如何成功填充它。在C ++中,我曾经这样做过
map<int, vector<int>>
for (int i = 0; i < data.noevents; i++)
{
int t = (int)(rg.Next(1, 45));
Console.WriteLine(t);
timeslot_events.Add(t, new List<int>() { i });
}
答案 0 :(得分:1)
检查密钥是否已经存在,然后针对该密钥添加,否则插入新的KeyValue对,如下所示:
for (int i = 0; i < data.noevents; i++)
{
int t = (int)(rg.Next(1, 45));
Console.WriteLine(t);
if (timeslot_events.ContainsKey(t))
{
if (timeslot_events[t] == null)
{
timeslot_events[t] = new List<int>();
}
timeslot_events[t].Add(i);
}
else
{
timeslot_events.Add(t, new List<int>() { i });
}
}
答案 1 :(得分:1)
我会使用一些LINQ。
var query =
from n in Enumerable.Range(0, data.noevents)
group n by rg.Next(1, 45);
foreach (var x in query)
{
timeslot_events.Add(x.Key, x.ToList());
}