2013-10-23 26 views
0

我一個Dictionary<string, string> specDic有資源字符串<Key,Value>,當我改變應用程序的語言,它有了新的Dictionary<string, string> newDic有新的語言的字符串,但有時在newDic我們沒有已經在specDic,換句話說,沒有翻譯,我需要用newDic沒有覆蓋非找到註冊表項以覆蓋specDic鍵,我試過如下:覆蓋特定的字典,並留下非找到鑰匙

foreach (var item in newDic) 
    { 
     specDic[item.Key] = item.Value; 
    } 

但是,我不喜歡我所做的,有人可以建議我使用linq或somthing的新方法嗎?

感謝

+0

任何不使用[ResourceManager]的原因(http://msdn.microsoft.com/zh-cn/library/cc838238%28v=vs.95%29.aspx)? –

回答

1

把你的邏輯四周,尋找從原始字典中的每個鍵代替:

foreach (var key in specDic.Keys) 
{ 
    if (newDic.ContainsKey(key)) 
    { 
     specDic[key] = newDic[key]; 
    } 
} 

現在,如果newDic包含密鑰匹配之一specDic,相應的值在specDic會被覆蓋(或被替代,而不是)從newDic的值。

specDic中的值(鍵)在newDic中沒有相應的值將保持原樣。