是否有更简单的方法将source
字典的所有内容复制/添加到destination
Dictionary<T1, T2>
对象,而不是使用下面示例中的两个选项之一?
Dictionary<string, int> source = new Dictionary<string, int>(),
destination = new Dictionary<string, int>();
source.Add("Developers", 1);
source.Add("just", 2);
source.Add("wanna have", 3);
source.Add("FUN!", 4);
// Option 1 (feels like a hack):
//
source.All(delegate(KeyValuePair<string, int> p)
{
destination.Add(p.Key, p.Value);
return true;
});
// Option 2:
//
foreach (string k in source.Keys)
{
destination.Add(k, source[k]);
}
我所寻找的是.ForEach()
。
答案 0 :(得分:5)
是的,您可以使用constructor:
Dictionary<string, int> destination = new Dictionary<string, int>(source);
如果destination
已经填写,并且你不想丢失它们,请注意我使用它:
foreach (var kv in source)
if (!destination.ContainsKey(kv.Key))
destination.Add(kv.Key, kv.Value);
答案 1 :(得分:1)
您可以使用Concat:
Dictionary<string, int> dict1 = new Dictionary<string, int>();
dict1.Add("first", 1);
Dictionary<string, int> dict2 = new Dictionary<string, int>();
dict2.Add("second", 2);
dict2 = dict2.Concat(dict1).ToDictionary(k => k.Key, v => v.Value);
这当然不会真正添加&#39;它到字典中,但用新的替换它。您可以使用Union删除重复项。
答案 2 :(得分:0)
static void Main()
{
Dictionary<string, int> source = new Dictionary<string, int>();
Dictionary<string, int> destination = new Dictionary<string, int>();
destination.Add("Apple", 1);
destination.Add("Banana", 2);
foreach (var item in destination)
{
source.Add(item.Key, item.Value);
}
foreach (var item in destination)
{
Console.WriteLine("Key is {0} and value is {1}", item.Key, item.Value);
}
}