【发布时间】:2010-10-25 13:50:53
【问题描述】:
我正在开发一个面向 .NET 3.5 的 C# 应用程序。在其中,我有 2 个类似的字典,其中包含我的应用程序中一组特定元素的验证标准。两个字典都有相同的签名。第一个字典具有默认设置,第二个字典包含一些用户定义的设置。
var default_settings = new Dictionary<string, MyElementSettings>();
var custom_settings = new Dictionary<string, MyElementSettings>();
我想将这两个字典合并为一个包含两个字典元素的字典。
我遇到的问题是两个字典有可能有一些相同的键值。我想要的基本规则是结合使用两个字典,如果 custom_settings 中的任何键已经存在于 default_settings 中,则 custom_settings 值将覆盖 default_settings 值。我最好的解决方案只是一个 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 循环的行为我在用吗?
【问题讨论】:
标签: c# dictionary linq-to-objects