Добавление или обновление элементов словаря с использованием Linq - PullRequest
0 голосов
/ 11 ноября 2010

Мне нужно проверить, существует ли ключ и, соответственно, добавить или обновить в словаре.

        if (dict.ContainsKey("Key1"))
            dict["Key1"] = "Value1";
        else
            dict.Add("Key1", "Value1");

Можно ли упростить это с помощью Linq или иным способом?

Ответы [ 3 ]

8 голосов
/ 11 ноября 2010

Вы можете упростить свои 4 строки кода до этого:

dict["Key1"] = "Value1";

Если Key1 не существует в словаре, он будет добавлен, и если он существует, значение будет обновлено.Это то, что делает индексатор.Что касается LINQ, я не вижу никакого отношения к этому вопросу.

0 голосов
/ 11 ноября 2010

Вы также можете использовать что-то вроде этого:

 Dictionary<string, string> dict = new Dictionary<string, string>();
        dict.Add("1", "1");
        dict.Add("2", "2");

        var x = dict.Where(q => q.Key == "1");
        if (x.Any())
            dict[x.FirstOrDefault().Key] = "new";
0 голосов
/ 11 ноября 2010

Не совсем ... linq является языком запросов и не предназначен для изменения структур данных. Вы можете обойти это, но вы не должны считать свой код неправильным только потому, что это не linq. Единственная строка, которую вы можете добавить к коду, который вы опубликовали в 'linq-ify', это изменить dict.ContainsKey("Key1") на dict.Any(x => x.Key == "Key1"), но не делайте этого , так как , без сомнения будь медленнее . Я действительно считаю, что ответ Дарина довольно элегантный, и рекомендую вам его использовать!

...