我正在使用C#开发一个针对.NET 3.5的应用程序。其中,我有两个类似的字典,它们包含了特定一组元素的验证标准。这两个字典具有相同的签名。第一个字典具有默认设置,而第二个字典包含了一些用户定义的设置。
var default_settings = new Dictionary<string, MyElementSettings>();
var custom_settings = new Dictionary<string, MyElementSettings>();
我想将这两个字典合并成一个,包含两个字典的元素。
我的问题是,两个字典中可能有相同的键值。基本规则是将两个字典合并,并且如果自定义设置中已经存在于默认设置中的任何键,则自定义设置的值将覆盖默认设置的值。我最好的解决方案只是使用foreach循环,检查另一个字典中是否存在该键,如果不存在,则添加它。
foreach (var item in custom_settings)
{
if (default_settings.ContainsKey(item.Key))
default_settings[item.Key] = item.Value;
else
default_settings.Add(item.Key, item.Value);
}
我已经完成了一些基本的LINQ查询,但我仍在努力学习更高级的内容。 我看到过一些合并2个字典的查询,但大多数涉及将具有重复键的任何元素分组,或仅返回只包含重复键的集合。是否有一个LINQ查询或表达式可以模仿我正在使用的foreach循环的行为?
TryGetValue
方法来检查对象是否已经存在于字典中。 - Matthieu H