日期:2014-05-17  浏览次数:20855 次

根据单元格的值删除datatable中此单元格所在的行。
我想根据单元格的值删除datatable中此单元格所在的行。



if (listAttr.Count > 0)
                {
                    string attr = "";
                    for (int k = 0; k < dt.Rows.Count; k++)
                    {
                        if (listAttr.Contains(dt.Rows[k]["flngitemid"].ToInt()))
                        {
                            for (int i = 0; i < listAttr.Count; i++)
                            {
//这里会出现问题,delete之后,dt.Rows.Count随之改变,虽然不会报错,但是数据是错误的
                                dt.Rows[k].Delete();
                      }
                        }
                    }
                }

有人能帮忙解决一下吗。

------解决方案--------------------
一般要删除的时候付个删除标签,例如.IsDelete = true这样,显示的时候判断下
------解决方案--------------------
list中的索引应该和datable中的索引是一样的吧,只要你没有对table进行过select等,那么,直接根据索引移除table中的row就行了
------解决方案--------------------
 var row = dt.Rows.OfType<DataRow>().Where(t => t.Field<string>("id") == "2").ToList();
            row.ForEach(T => dt.Rows.Remove(T));//将id为2的行删除