关于在DataTable中删除相关DataRow,急求

War3_Fan 2011-08-11 02:37:21
现在我需要在DataTable删除我不需要的DataRow
DataTable 里面有4列,我是根据第一列去删除的,比如,如果我要删除,那么就删除第一列是0的所有行

foreach (DataRow drw in dtResult.Rows)
{
if (drw[0].ToString() == "0")
{
drw.Delete();
}
dtResult.AcceptChanges();
}

我现在写了上面的方法,但是执行到第二次就会报错,提示枚举之类的错误。想了很多方法都不稳妥,希望大家帮帮忙,多谢了

...全文
69 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lazy_wang 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cmhua 的回复:]
for (int i=dtResult.Rows.Count;i<=0;i--)
{
if (dtResult.Rows[i][0].ToString() == "0")
dtResult.Rows[i]Delete();
}
dtResult.AcceptChanges();
[/Quote]

这个对吗?
int i=dtResult.Rows.Count;
dtResult.Rows[i]
应该会数组越界吧... 是不是啊
skyaihuacai 2011-08-11
  • 打赏
  • 举报
回复
同意LS的
sdl2005lyx 2011-08-11
  • 打赏
  • 举报
回复
楼主的方法没问题,只要稍微改改就行了:
foreach (DataRow drw in dtResult.Rows)
{
if (drw[0].ToString() == "0")
{
drw.Delete();
}
}
dtResult.AcceptChanges(); //把这句提到外面来
  • 打赏
  • 举报
回复
#1 #2 正解
zlblog 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cmhua 的回复:]

for (int i=dtResult.Rows.Count;i<=0;i--)
{
if (dtResult.Rows[i][0].ToString() == "0")
dtResult.Rows[i]Delete();
}
dtResult.AcceptChanges();
[/Quote]

这个做法很不错。

欢迎光临我的博客
gcm514829738 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cmhua 的回复:]
for (int i=dtResult.Rows.Count;i<=0;i--)
{
if (dtResult.Rows[i][0].ToString() == "0")
dtResult.Rows[i]Delete();
}
dtResult.AcceptChanges();
[/Quote]
正解 顶一个
guangguang7 2011-08-11
  • 打赏
  • 举报
回复
你不能便循环,边删除table中的行。因为删除后table中的rows集合改变了,就会出错。
你把要删除的rows先放到已个集合内,然后遍历这个集合,从table中删除。
cmHua 2011-08-11
  • 打赏
  • 举报
回复
for (int i=dtResult.Rows.Count;i<=0;i--)
{
if (dtResult.Rows[i][0].ToString() == "0")
dtResult.Rows[i]Delete();
}
dtResult.AcceptChanges();

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧