在使用Dictionary时,遇到一个bug。具体如下
定义了一个Dictionary Category<string,List<string>>;
填充时Category[key1].Add(temp2)时,key2、key3也被添加了temp2。
谁能帮帮我啊!!万分感谢!!!bugDictionary

解决方案 »

  1.   

    Dictionary<string,List<string>> Category=new Dictionary<string,List<string>>();你具体代码怎么写的?贴上
      

  2.   

    Dictionary<string, List<string>> Category = new Dictionary<string, List<string>>();
                foreach (DataRow row in table1.Rows)
                {
                    List<string> temp = new List<string>();
                    object[] obj = row.ItemArray;
                    string[] cells = new string[row.ItemArray.Length];
                    for (int i = 0; i < row.ItemArray.Length; i++)
                    {
                        cells[i] = obj[i].ToString();
                    }
                    temp.Add(cells[0]);
                    if (cells[0].Contains(',') || cells[0] == null)
                    {
                        continue;
                    }
                    if (cells[1] != null && !cells[0].Contains(','))//
                    {
                        for (int i = 1; i <= cells.Length; i++)
                        {
                            if (cells[i] == null || cells[i] == "" || cells[i].Contains(','))
                            {
                                break;
                            }
                            if (Category.Keys.Contains(cells[i]))
                            {
                                if (Category[cells[i].ToString()].Contains(cells[0].ToString()) == false || Category[cells[i].ToString()] != null)
                                {
                                    //MessageBox.Show(Category[cells[i]].ToArray().ToString());
                                    Category[cells[i].ToString()].Add(cells[0].ToString());
                                }
                            }
                            else
                            {
                                Category.Add(cells[i], temp);
                            }
                        }
                    }
      

  3.   

      设个断点 调试下把 
      这么多IF  如果数据都在temp中  估计也就只执行了  Category.Add(cells[i], temp); 这句
      

  4.   

    已经设断点调试了,
    cell[i]只有一个,
    但Category.Add(cells[i], temp)给多个添加; 
      

  5.   

    我觉得引用出问题的地方应该是cell[i],该怎么解决啊?
      

  6.   

    代码太长懒得看,是不是这句的问题?Category[cells[i].ToString()].Add(cells[0].ToString());cells[0]
      

  7.   

       for (int i = 1; i <= cells.Length; i++)
      {
               Category[cells[i].ToString()].Add(cells[0].ToString());
      }  这不是所有的都添加吗
      

  8.   

    写这段代码是用来实现一个统计:
    遍历一个Datatable中的每一行row,
    row的第一个单元格cell[0]是该行的标题。
    每行的其他单元格包含该标题的类别信息;
    需要统计类别所包含的标题,将其放到一个Dictionary<string,List<string>>中,其中key为类别,value为标题。