覆盖特定字典,并保留未找到的密钥

时间:2013-10-23 11:53:31

标签: c# silverlight silverlight-5.0

我有一个Dictionary<string, string> specDic,其资源字符串为<Key,Value>,当我更改应用程序的语言时,它会获得具有新语言字符串的新Dictionary<string, string> newDic,但是有时在newDic我们没有已经在specDic中的键,换句话说没有翻译,我需要用specDic覆盖newDic而不覆盖非找到钥匙,我尝试了以下几点:

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

但是,我不喜欢我所做的,是否有人可以使用linq或somthing建议我一种新的方法?

由于

1 个答案:

答案 0 :(得分:1)

改变你的逻辑,然后从原始词典中寻找每个键:

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

现在,如果newDic包含与specDic匹配的密钥,则specDic中的相应值将被newDic中的值覆盖(或替换)

specDicnewDic中没有相应值的值(键)将保持不变。