你应该先把要删除的行号放到一个List<int>里,等循环完了,再遍历List去删除行
要么把for循环倒过来,从后往前删除否则本来有10行,你for循环10次,你删了1行,就剩9行了,那不索引溢出了

解决方案 »

  1.   


    对哦,醒悟了 主要是我没学过LIST,所以不知道能用这个。。谢谢。我现在找一下资料学习一下。。总是现学现用中!
      

  2.   

    List<int> mList = new List<int>();
                mList.Clear();
                for (int i = 0; i < dtbest.Rows.Count; i++)
                {
                    for (int j = i+1; j < dtbest.Rows.Count; j++)
                    {
                     if ((double.Parse(dtbest.Rows[i]["A"].ToString()) == double.Parse(dtbest.Rows[j]["A"].ToString())) && (double.Parse(dtbest.Rows[i]["B"].ToString()) == double.Parse((dtbest.Rows[j]["B"].ToString()))))
                            {
                                mList.Add(j);
                            }
                    }
                }
                foreach (int j in mList)
                {
                    dtbest.Rows.RemoveAt(j);
                }请帮我鉴定一下,这样写是否正确??谢谢!刚学,请你鉴定一下。
      

  3.   

    List<int> mList = new List<int>();
                mList.Clear();
                for (int i = 0; i < dtbest.Rows.Count; i++)
                {
                    for (int j = i+1; j < dtbest.Rows.Count; j++)
                    {
                     if ((double.Parse(dtbest.Rows[i]["A"].ToString()) == double.Parse(dtbest.Rows[j]["A"].ToString())) && (double.Parse(dtbest.Rows[i]["B"].ToString()) == double.Parse((dtbest.Rows[j]["B"].ToString()))))
                            {
                                mList.Add(j);
                            }
                    }
                }
                foreach (int j in mList)
                {
                    dtbest.Rows.RemoveAt(j);
                }
    请帮我鉴定一下,这样写是否正确??谢谢!刚学,请你鉴定一下。
      

  4.   

    mList.Clear();这句话可以不要,本身就是刚new出来的,里面没东西
    mList.Add(j)之前,先判断
    if(!mList.Contains(j));
    然后不要foreach
    你应该for(int i=mList.Count;i>0;i--)
    从后往前删,否则
    比如你想删除2,3行
    你删除了2,原来的3行变成2行,4行变成3行,你再删3,其实是把原来的4删除了
      

  5.   

    if(!mList.Contains(j));这句话的作用是不要出现2个"第2行",你本来只想删除1行,结果删除了2遍,就删除2行了