是否可以将一个字典添加到另一个字典中,例如:
Dictionary<string,int> d1=new Dictionary<string,int>()
{
{"abc",1}
{"def",2}
};
Dictionary<string,string> d2=new Dictionary<string,string>()
{
{"str","fgh"}
{"uyz","ghi"}
};
我需要将d1
添加到d2
。请注意,词典有不同的签名。
答案 0 :(得分:1)
只有同时签名时才有可能。因此,您应该恢复为object
或string
。
只需遍历其中一个词典(最好是string,int
一个词典),然后将值添加到另一个词典中,转换其值。
答案 1 :(得分:1)
您可以使用Concat
+ ToDictionary
。
var newPairs = d1
.Where(kv1 => !d2.ContainsKey(kv1.Key))
.Select(kv1 => new KeyValuePair<string, string>(kv1.Key, kv1.Value.ToString()));
d2 = d2.Concat(newPairs).ToDictionary(kv => kv.Key, kv => kv.Value);
Where
首先检查第二个字典是否已包含第一个字典中的给定键。 Select
会将值转换为string
并创建KeyValuePair<string, string>
。
答案 2 :(得分:0)
如果您的值可以有不同的类型,则可以创建第DIctionary<String, Object>
类型的第三个字典,并将字典中的所有项目添加到其中。
Dictionary<string,int> d1=new Dictionary<string,int>()
{
{"abc",1}
{"def",2}
};
Dictionary<string,string> d2=new Dictionary<string,string>()
{
{"str","fgh"}
{"uyz","ghi"}
};
Dictionary<String, Object> combinedDict = new Dictionary<String, Object>();
foreach(var d1Item in d1)
combinedDict.Add(d1Item.Key, d1Item.Value);
foreach(var d2Item in d2)
combinedDict.Add(d2Item.Key, d2Item.Value);
答案 3 :(得分:0)
您无法将字典添加到另一个字典中,该字典包含不同类型的键值对。
但是,如果你决定使用哪个键和值对的类型,那么你可以将一个转换为另一个并将一个字典添加到另一个。
例如,让我们有一个名为dictionaryA
的词典:
Dictionary<string, int> dictionaryA = new Dictionary<string, int>();
和另一个名为dictionaryB
的词典:
Dictionary<string, string> dictionaryB = new Dictionary<string, string>();
还要我们要将dictionaryA
添加到dictionaryB
并创建一个字典,它将相应地保存类型string
和string
的键值对。然后你可以尝试这样的事情:
foreach(var key in dictionaryA)
{
// Check if the key is not contained in the keys collection of dictionaryB.
// If so, add the corresponding element of the dictionaryA to the dictionaryB.
if(!dictionaryB.Keys.Contains(key))
dictionaryB.Add(key, dictionaryA[key].ToString());
}