所以我循环遍历一些对象并初始化一个 Dictionary> 对象。
所以首先我检查 key 是否存在,如果存在我将添加到列表
如果没有,我将创建一个新 key 和新列表
这是正确的逻辑吗?
我将不得不做一个:
new List<int>();
我第一次插入一个项目对吗?
即:
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);
}
最佳答案
您的方法很有效。它的效率有点低,因为它需要两次字典查找(一次用于 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);
一次性填充列表并将其添加到字典中效率更高(当然,如果您的情况可行的话)。在 C# 3.0 中,有一个称为集合初始化器 的功能,如果项目在编译时已知,则可以轻松地填充列表:
var list = new List<int> { 1, 9, 8, 9, 1, 8, 1, 2 };
您也可以考虑使用 something like this to map a key to multiple values .
关于c# - 将项目添加到 Dictionary<int, List<int>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1640373/