使用Linq添加或更新字典元素

时间:2010-11-11 19:44:24

标签: c# .net linq linq-to-objects

我需要检查密钥是否存在,以及相应的字典中的添加或更新。

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

我可以使用Linq或其他方式简化此操作吗?

3 个答案:

答案 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";
相关问题