Я разрабатываю приложение в С#, ориентированном на .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 Я использую?