希望我可以征求意见。
我有两本词典
Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>();
Dictionary<string, List<string>> dictFinal = new Dictionary<string, List<string>>();
在这两种情况下,键值都相同,但两者都代表不同的字符串值列表。
我想要的是让一个字典具有相同的键值,并将字符串值列表合并到一个字典中
我确实从一个严重的循环开始,但很快意识到这可能不是最好的解决方案
foreach (var fin in dictFinal)
{
foreach (var valFin in fin.Value)
{
foreach (var kvp in dict)
{
foreach (var v in kvp.Value)
{
}
}
}
}
有没有更好的方法将这两个词典“放在一起”?
答案 0 :(得分:3)
Dictionary<string, List<string>> d1 = new Dictionary<string, List<string>>();
Dictionary<string, List<string>> d2 = new Dictionary<string, List<string>>();
d2.ToList().ForEach(x =>
{
if (d1.ContainsKey(x.Key))
d1[x.Key].AddRange(x.Value);
else
d1.Add(x.Key, x.Value);
});
这会将两个词典合并到d1
。
没有ToList()
foreach(var x in d1)
{
if (d1.ContainsKey(x.Key))
d1[x.Key].AddRange(x.Value);
else
d1.Add(x.Key, x.Value);
}
答案 1 :(得分:1)
我会使用循环。假设合并意味着列表应包含唯一的字符串:
foreach (var kvp in dict)
{
List<string> listInDict2;
if (dictFinal.TryGetValue(kvp.Key, out listInDict2))
dictFinal[kvp.Key] = kvp.Value.Union(listInDict2).ToList();
else
dictFinal.Add(kvp.Key, kvp.Value);
}
答案 2 :(得分:1)
您可以尝试使用
UNION或JOIN方法合并结果
dictFinal.union或dictFinal.join