DataTable怎么循环删除行? 
我的代码:
              DataSet ds = GetDataSet();//填充DataSet方法,没有问题
            DataTable dt = ds.Tables[0];
              foreach (DataRow dr in dt.Rows)
            {
                if (dr.RowState != DataRowState.Deleted)
                {
                    dt.Rows.Remove(dr);
                }
                dt.AcceptChanges();
            }
可是删除完第一行后 就会出现异常 :结果集已被更新 操作不能进行
请高人执教 应该怎么实现循环删除行 谢了

解决方案 »

  1.   


                for (int i=0;i< dt.Rows.Count;i++) 
                { 
                    if (dt.Rows[i].RowState != DataRowState.Deleted) 
                    { 
                        dt.Rows.Remove(dt.Rows[i]); 
                    } 
                    dt.AcceptChanges(); 
                } 
      

  2.   

    dt.AcceptChanges();  拿循环外面
      

  3.   

    foreach 循环使用过程中要求集合不能修改,使用for循环
      

  4.   

    while(dt.Rows.Count>0){
      dt.Rows[0].remove();
    }
    dt.AcceptChanges();
      

  5.   


                for (int i=0;i< dt.Rows.Count;i++) 
                { 
                    if (dt.Rows[i].RowState != DataRowState.Deleted) 
                    { 
                        dt.Rows.Remove(dt.Rows[i]); 
                    }                 
                } 
                dt.AcceptChanges(); 
      

  6.   

     dt.AcceptChanges(); 
    问题出在这里,拿在循环外
      

  7.   

    for (int i=0;i< dt.Rows.Count;i++) 
                { 
                        dt.Rows.Remove(dt.Rows[0]);             
                } 
                dt.AcceptChanges(); 
      

  8.   

    不对。要用while, < dt.Rows.Count不行,Count也会变
      

  9.   

    要删除 table 行,从大到小遍历.for(int i=tb.Rows.Count-1 ; i>=0; i--)
    {
        //do something
    }
      

  10.   


                for (int i=0;i < dt.Rows.Count;i++) 
                { 
                    if (dt.Rows[i].RowState != DataRowState.Deleted) 
                    { 
                        dt.Rows.Remove(dt.Rows[i]); 
                        i--;
                    } 
                } 
                dt.AcceptChanges(); or            for (int i=dt.Rows.Count-1;i >=0;i--) 
                { 
                    if (dt.Rows[i].RowState != DataRowState.Deleted) 
                    { 
                        dt.Rows.Remove(dt.Rows[i]);                     
                    } 
                } 
                dt.AcceptChanges(); 
      

  11.   

    严重支持12楼(Sandy945)..只有他完全正确!