我正在C#中開發一個以.NET 3.5爲目標的應用程序。其中,我有2個類似的字典,其中包含我的應用中特定元素集的驗證條件。兩本字典都有相同的簽名。第一個詞典具有默認設置,第二個詞典包含一些用戶定義的設置。C#合併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循環的行爲我在用?
+1點#2(http://msdn.microsoft.com/en-us/library/k7z0zy8k.aspx) – Brad 2010-10-25 13:59:12
+1教我的東西我不知道。我相對自我教育與C#,並不知道你可以用字典做到這一點。 – psubsee2003 2010-10-25 14:09:54
@ psubsee2003:歡呼聲。我很確定我使用了與您的代碼相同的模式,然後才發現它是多餘的(偶然,正在用反射器探索)。 – Ani 2010-10-25 14:17:17