将项添加到Dictionary <int,List <int >>

mrb*_*lah 6 c# collections dictionary

所以我循环遍历一些对象并初始化Dictionary>对象.

首先,我检查密钥是否存在,如果存在,我将添加到列表中

如果没有,我将创建一个新密钥和新列表

这是正确的逻辑吗?
我将不得不这样做:

new List<int>();
Run Code Online (Sandbox Code Playgroud)

我第一次插入项目了吗?

即:

if(myDic.ContainsKey(car.ID))
{
      myDic[car.ID].Add(car.MfgID);
}
else
{
   myDic.Add(car.ID, new List<int>);
   myDic[car.ID].Add(car.MfgID);
}
Run Code Online (Sandbox Code Playgroud)

Meh*_*ari 23

你的方法很好.它有点低效,因为它需要两个字典查找(一个用于Contains和一个用于将项添加到列表中).您可以使用Dictionary.TryGetValue方法更有效地执行此操作:

List<int> list;
if (!myDic.TryGetValue(car.ID, out list))
    myDic.Add(car.ID, list = new List<int>());
list.Add(car.MfgId);
Run Code Online (Sandbox Code Playgroud)

填充列表并一次性将其添加到字典中更有效(当然,如果可能的话).在C#3.0中,有一个称为集合初始化程序的功能,如果在编译时已知项目,则可以轻松填充列表:

var list = new List<int> { 1, 9, 8, 9, 1, 8, 1, 2 }; 
Run Code Online (Sandbox Code Playgroud)

您也可以考虑使用类似的东西将键映射到多个值.