如何在c#中的字典中动态填充列表?

时间:2016-04-18 06:35:01

标签: c# list dictionary dynamic collections

我想填写一个列表 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 });

}

2 个答案:

答案 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());
}