C# 将项目添加到词典<;int,List<;int>&燃气轮机;

C# 将项目添加到词典<;int,List<;int>&燃气轮机;,c#,collections,dictionary,C#,Collections,Dictionary,所以我在一些对象中循环并初始化Dictionary>object 因此,首先我检查密钥是否存在,如果存在,我将添加到列表中 如果没有,我将创建一个新键和新列表 这是正确的逻辑吗? 我将不得不做一个: new List<int>(); newlist(); 第一次插入项目时,对吗 i、 e: if(myDic.ContainsKey(car.ID)) { myDic[car.ID].Add(car.MfgID); } 其他的 { myDic.Add(car.ID,新列表); myD

所以我在一些对象中循环并初始化Dictionary>object

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

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

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

new List<int>();
newlist();
第一次插入项目时,对吗

i、 e:

if(myDic.ContainsKey(car.ID))
{
myDic[car.ID].Add(car.MfgID);
}
其他的
{
myDic.Add(car.ID,新列表);
myDic[car.ID].Add(car.MfgID);
}

你的方法很有效。它的效率有点低,因为它需要两个字典查找(一个用于
包含
,另一个用于将项目添加到列表)。您可以使用以下方法更有效地执行此操作:

列表;
如果(!myDic.TryGetValue(car.ID,out list))
myDic.Add(car.ID,list=newlist());
列表.添加(car.MfgId);
一次填写列表并将其添加到字典中更有效(当然,如果您的情况可能的话)。在C#3.0中,有一个称为集合初始值设定项的功能,如果在编译时已知项,则可以很容易地填充列表:

var list = new List<int> { 1, 9, 8, 9, 1, 8, 1, 2 }; 
var list=新列表{1,9,8,9,1,8,1,2};

你也可以考虑使用.

伟大,现在你和里德只需要把两个答案组合成一个:),而且集合初始化器也可能值得一提。@帕维尔:我的答案消除了Reed回答中提到的重新排序的需要。它总是只查找一个字典。
List<int> list;
if (!myDic.TryGetValue(car.ID, out list))
    myDic.Add(car.ID, list = new List<int>());
list.Add(car.MfgId);
var list = new List<int> { 1, 9, 8, 9, 1, 8, 1, 2 };