var dict1 = new Dictionary>();
dict1.Add("qaz",new List(){"100"});//含有qaz键
dict1.Add("wsx",new List(){"13"}); var dict2 = new Dictionary>();
dict2.Add("qaz", new List() { "11" });//也含有qaz键
dict2.Add("edc", new List() { "17" }); //合并2个字典到dict
var dictCombine = new Dictionary>();
foreach (var ele in dict1) //拿到dict1
{
dictCombine .Add(ele.Key,ele.Value);
}
foreach (var ele in dict2) //拿到dict2
{ if(dictCombine.ContainsKey(ele.Key))//检查重复
dictCombine [ele.Key].AddRange(ele.Value);
else
{
dictCombine .Add(ele.Key,ele.Value);
}
}
bool flag = object.ReferenceEquals(dictCombine[ele.Key], dict1[ele.Key]);//true
正解
避免dictCombine[ele.Key]和dict1[ele.Key]引用相等!!!
Dictionary> dict = new Dictionary>();
//先把键都合并到dictCombine中,值都是新创建的
foreach (var key in dict1.Keys)
{ if (!dictCombine.ContainsKey(key))
dictCombine.Add(key, new List());
} foreach (var key in dict2.Keys)
{ if (!dictCombine.ContainsKey(key))
dictCombine.Add(key, new List());
} //分别将值添加进去
foreach (var ele in dict1)
{
dictCombine[ele.Key].AddRange(ele.Value);
} foreach (var ele in dict2)
{
dictCombine[ele.Key].AddRange(ele.Value);
}