Dictionary<int, string> dic = new Dictionary<int, string>();
dic.Add(2,"aaa");
dic = dic.ToDictionary(5,x =>x.Value);  //生成新的键值对我重新以数字5为键,以原键值对的value值为值,转换成新的键值对,为什么不行?

解决方案 »

  1.   

    你想把  2,aaa 修改成 5,aaa?那如果dic内里有多个值
    岂不是KEY都被修改成了 5?并且你这样用法也不对啊没有这样的重载方法
      

  2.   


    public void Linq56()
    {
        var scoreRecords = new[] { new {Name = "Alice", Score = 50},
                                    new {Name = "Bob"  , Score = 40},
                                    new {Name = "Cathy", Score = 45}
                                };
     
        var scoreRecordsDict = scoreRecords.ToDictionary(sr => sr.Name);
     
        Console.WriteLine("Bob's score: {0}", scoreRecordsDict["Bob"]);
    }
      

  3.   

    你的问题 可以尝试这样来解决:
    void Main()
    {
    Dictionary<int, string> dic = new Dictionary<int, string>();
    dic.Add(2,"aaa");
    dic.Add(3,"bbb");
     
    var query=dic.SingleOrDefault(d=>d.Key ==2);
    if(!dic.Any(d=>d.Key ==5))
    {
      dic.Remove(query.Key);
       
      dic.Add(5,query.Value);

      
    }
      

  4.   

    if(!dic.Any(d=>d.Key ==5))是不是该写成:if(dic.Any(d=>d.Key !=5))
    麻烦您看一下
      

  5.   

    不是这个IF是判断dic内 没有KEY=5的值
    不然ADD会出错