我需要检查密钥是否存在,以及相应的字典中的添加或更新。
if (dict.ContainsKey("Key1"))
dict["Key1"] = "Value1";
else
dict.Add("Key1", "Value1");
我可以使用Linq或其他方式简化此操作吗?
答案 0 :(得分:8)
您可以将4行代码简化为:
dict["Key1"] = "Value1";
如果字典中不存在Key1,它将被添加,如果存在,则将更新该值。这就是索引器的作用。就LINQ而言,我认为这个问题没有任何关系。
答案 1 :(得分:0)
不是真的...... linq是一种查询语言,并不打算改变数据结构。你可以解决这个问题,但你不应该仅仅因为它不是linq而认为你的代码错了。您可以添加到您发布到'linq-ify'的代码的唯一一行是将dict.ContainsKey("Key1")
更改为dict.Any(x => x.Key == "Key1")
,但是不会这样做,因为它会no doubt be slower。我实际上认为Darin的答案很优雅,建议你使用它!
答案 2 :(得分:0)
您也可以使用以下内容:
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";