现在我需要在DataTable删除我不需要的DataRow
DataTable  里面有4列,我是根据第一列去删除的,比如,如果我要删除,那么就删除第一列是0的所有行 foreach (DataRow drw in dtResult.Rows)
  {
  if (drw[0].ToString() == "0")
   {
     drw.Delete();
   }
    dtResult.AcceptChanges();
  }我现在写了上面的方法,但是执行到第二次就会报错,提示枚举之类的错误。想了很多方法都不稳妥,希望大家帮帮忙,多谢了

解决方案 »

  1.   

                               int[] ar = new int[dtResult.Rows.Count];
                               for (int i = 0; i < dtResult.Rows.Count; i++)
                               {
                                    if (dtResult.Rows[i][0].ToString() =="0")
                                   {
                                   ar[i] = i;
                                    }
                               }                           for (int num=ar.Length-1; num > -1 ;num-- )
                               {
                                  dtResult.Rows[num].Delete();
                               }可以试试
      

  2.   


     DataTable dtResult = new DataTable();            DataColumn dc = new DataColumn() { ColumnName = "ID" };
                dtResult.Columns.Add(dc);            DataRow dr = dtResult.NewRow();
                dr[0] = "0";
                dtResult.Rows.Add(dr);
                dr = dtResult.NewRow();
                dr[0] = "0";
                dtResult.Rows.Add(dr);
                dr = dtResult.NewRow();
                dr[0] = "1";
                dtResult.Rows.Add(dr);
                dr = dtResult.NewRow();
                dr[0] = "1";
                dtResult.Rows.Add(dr);            DataRow drw ;            int j = dtResult.Rows.Count;
                for (int i = 0; i < j; i++)
                {
                    drw = dtResult.Rows[0];                if (drw[0].ToString() == "0")
                    {
                        drw.Delete();
                    }  
                }
      

  3.   


     DataTable dtResult = new DataTable();            DataColumn dc = new DataColumn() { ColumnName = "ID" };
                dtResult.Columns.Add(dc);            DataRow dr = dtResult.NewRow();
                dr[0] = "0";
                dtResult.Rows.Add(dr);
                dr = dtResult.NewRow();
                dr[0] = "0";
                dtResult.Rows.Add(dr);
                dr = dtResult.NewRow();
                dr[0] = "1";
                dtResult.Rows.Add(dr);
                dr = dtResult.NewRow();
                dr[0] = "1";
                dtResult.Rows.Add(dr);            DataRow drw ;            int j = dtResult.Rows.Count;
                for (int i = 0; i < j; i++)
                {
                    drw = dtResult.Rows[i];                if (drw[0].ToString() == "0")
                    {
                        drw.Delete();                    i--;
                        j--;
                    }            }
    不好意思前面误导大家了,应该是在删完一条数据后,总数据要减1,index数也要-1。