在c#中 RemoveAt、 Remove、delete用法区别

删除DataRow:有两种方法可以删除DataRow,分别是Delete方法和Remove方法和RemoveAt方法。

其区别是:

Delete方法实际上不是从DataTable中删除掉一行,而是将其标志为删除,仅仅是做个记号,

而Remove方法则是真正的从DataRow中删除一行,

RemoveAt方法是根本行的索引来删除。

如:

DataRow  dr=ds.Tables[table].Rows.Find(a);ds.Tables[table].Remove(dr);或                                                       ds.Tables[table].Remove(index);//dr 为a所在的行,查出后将其删除,index为 a所在的索引号。

 

有两种方法可以删除DataTable中的DataRow:
Delete方法和Remove方法和RemoveAt方法,其区别是:
Delete方法实际上不是从DataTable中删除掉一行,而是将其标志为删除,仅仅是做个记号,而Remove方法则是真正的从DataRow中删除一行,RemoveAt方法是根据行的索引来删除。
使用方法:
DataRow dr=ds.Tables["table"].Rows.Find("a"); 
ds.Tables["table"].Remove(dr); 
或 
ds.Tables["table"].RemoveAt(index);

ds.Tables["table"].Row[index].Delete();
Question:
今天在实现一个循环删除的功能的时候,用RemoveAt方法来实现,结果出现找不到第X行的错误提示。可见RemoveAt执行以后已经提交,就是如果原来表中有两条记录,那么执行一次RemoveAt(0)之后就只剩下一条记录了,再执行RemoveAt(1)就会报错(其实这个时候还应该执行RemoveAt(0))。所以循环删除的时候最好用Delete方法,这样先做删除标记,然后用table.AcceptChanges()方法统一提交。
 

两者是有区别的.
1.  使用myDataTable.Rows.RemoveAt(i)删除行.
2.  使用myDataTable.Rows(i).delete
这时候需要使用
myDataTable.AcceptChanges
才能更新到数据库.
-------------------------------
两种方法看似第一种比较简单.但不要在循环里使用myDataTable.Rows.RemoveAt(i).因为每删除一行后.i的值会增加,但行数会是减少了.这么做一定会出错.

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值