将一个Dictionary对象添加到另一个Dictionary对象
本文关键字:Dictionary 对象 添加 另一个 一个 | 更新日期: 2023-09-27 18:10:43
是否可以将一个字典添加到另一个字典,例如:
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
。请注意,字典有不同的签名。
这只有在两个签名相同的情况下才有可能。所以你应该恢复到object
或string
。
只需循环其中一个字典(最好是string,int
字典),并将值添加到另一个字典中,转换其值。
您可以使用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>
如果您的值可以有不同的类型,您可以创建类型为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);
不能将一个字典添加到另一个字典中,因为它包含不同类型的键值对。
但是,如果您决定要保存的键和值对的类型,则可以将一个字典转换为另一个字典,并将一个字典添加到另一个字典中。
例如,我们有一个名为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());
}