обновить хеш-таблицу другой хеш-таблицей? - PullRequest
6 голосов
/ 30 ноября 2009

Как я могу обновить значения одной хеш-таблицы другой хеш-таблицей,

если вторая хеш-таблица содержит новые ключи, то они должны быть добавлены к 1-м, иначе следует обновить значение 1-й хеш-таблицы.

Ответы [ 2 ]

16 голосов
/ 30 ноября 2009
foreach (DictionaryEntry item in second)
{
    first[item.Key] = item.Value;
}

При необходимости вы можете свернуть это в метод расширения (при условии, что вы используете .NET 3.5 или новее).

Hashtable one = GetHashtableFromSomewhere();
Hashtable two = GetAnotherHashtableFromSomewhere();

one.UpdateWith(two);

// ...

public static class HashtableExtensions
{
    public static void UpdateWith(this Hashtable first, Hashtable second)
    {
        foreach (DictionaryEntry item in second)
        {
            first[item.Key] = item.Value;
        }
    }
}
0 голосов
/ 30 ноября 2009

Код для этого (на основе словаря):

        foreach (KeyValuePair<String, String> pair in hashtable2)
        {
            if (hashtable1.ContainsKey(pair.Key))
            {
                hashtable1[pair.Key] = pair.Value;
            }
            else
            {
                hashtable1.Add(pair.Key, pair.Value);
            }
        }

Я уверен, что есть более элегантное решение, использующее LINQ (хотя я пишу код в 2.0;)).

...