C # Объединение двух словарей

Я разрабатываю приложение на C # для .NET 3.5. В нем у меня есть 2 похожих словаря, которые содержат критерии проверки для определенного набора элементов в моем приложении. Оба словаря имеют одинаковые подписи. Первый словарь имеет настройки по умолчанию, а второй словарь содержит некоторые пользовательские настройки.

var default_settings = new Dictionary<string, MyElementSettings>();
var custom_settings = new Dictionary<string, MyElementSettings>();

Я хотел бы объединить 2 словаря в один, содержащий элементы обоих словарей.

Проблема, с которой я столкнулся, заключается в том, что оба словаря могут иметь одни и те же ключевые значения. Основное правило, которое я хочу, - иметь комбинацию обоих словарей, и если в 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, который я использую?

20
задан Nix 25 October 2010 в 13:56
поделиться