Редактировать словарь из другого словаря в C # - PullRequest
1 голос
/ 20 октября 2010

У меня проблема с редактированием из одного словаря в другой.

Dictionary<string, string> firstDic = new Dictionary<string, string>();
firstDic.Add("one", "to make link");
firstDic.Add("two", "line break");
firstDic.Add("three", "put returns");

Dictionary<string, string> secondDic= new Dictionary<string, string>();
secondDic.Add("two", "line feeding");

// How could I write code something to change firstDic following from secondDic
// So dictionary firstDic will contain pair data
// "one" = "to make link"
// "two" = "line feeding"
// "three" = "put returns"
// The code may like 
// firstDict = firstDict.Select(?????????)

Regard.

Ответы [ 3 ]

1 голос
/ 20 октября 2010

Вы можете вставить все элементы из secondDic в firstDic, используя следующий код:

if (firstDic.ContainsKey(pair.Key))
{
    firstDic[pair.Key] = pair.Value;
}

Если вы хотите скопировать их только в том случае, если они уже существуют, вы можете выполнить такую ​​проверку следующим образом:

foreach (KeyValuePair<string, string> pair in secondDic)
{
    if (firstDic.ContainsKey(pair.Key))
    {
        firstDic[pair.Key] = pair.Value;
    }
}
0 голосов
/ 20 октября 2010

LINQ Approch

firstDic = firstDic.ToDictionary(X => X.Key, X => secondDic.ContainsKey(X.Key) ? secondDic[X.Key] : X.Value);
0 голосов
/ 20 октября 2010

Вот метод расширения, который сделает свое дело:

public static Dictionary<T,U> Edit<T,U>(this Dictionary<T,U> dictionary1, Dictionary<T,U> dictionary2) {
    foreach (T key in dictionary2.Keys)
    {
        if (dictionary1.ContainsKey(key))
        {
            dictionary1[key] = dictionary2[key];
        }
    }
    return dictionary1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...