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