Мне нужно проверить, существует ли ключ и, соответственно, добавить или обновить в словаре.
if (dict.ContainsKey("Key1")) dict["Key1"] = "Value1"; else dict.Add("Key1", "Value1");
Можно ли упростить это с помощью Linq или иным способом?
Вы можете упростить свои 4 строки кода до этого:
dict["Key1"] = "Value1";
Если Key1 не существует в словаре, он будет добавлен, и если он существует, значение будет обновлено.Это то, что делает индексатор.Что касается LINQ, я не вижу никакого отношения к этому вопросу.
Вы также можете использовать что-то вроде этого:
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";
Не совсем ... linq является языком запросов и не предназначен для изменения структур данных. Вы можете обойти это, но вы не должны считать свой код неправильным только потому, что это не linq. Единственная строка, которую вы можете добавить к коду, который вы опубликовали в 'linq-ify', это изменить dict.ContainsKey("Key1") на dict.Any(x => x.Key == "Key1"), но не делайте этого , так как , без сомнения будь медленнее . Я действительно считаю, что ответ Дарина довольно элегантный, и рекомендую вам его использовать!
dict.ContainsKey("Key1")
dict.Any(x => x.Key == "Key1")