首页 > Windows开发 > 详细

C#中DataTable删除多条数据

时间:2020-04-20 22:15:11      阅读:417      评论:0      收藏:0      [点我收藏+]
1、项目中使用的方法
//循环DataTable,删除数据
for (int i = dtPreview.Rows.Count - 1; i >= 0; i--)
{
if (listSelected.Contains(i))
{
dtPreview.Rows[i].Delete();
}
}
dtPreview.AcceptChanges();
 
2、说明。
即使使用的是Rows[i].Delete();方法,仍然有问题。
调试时发现执行玩Delete()方法,就会把DataTable中的数据删除掉,导致dtPreview.Rows.Count的值一直在变化。
所以倒着循环,从最大的索引开始删除,这样删除后,被删除索引前面的索引不会发生变化。
 
3、网上百度的结果
//一般情况下我们会这么删除
DataTable dt = new DataTable();
for (int i = 0; i < dt.Rows.Count; i++)
{
if (99 % i == 0)
{
dt.Rows.RemoveAt(i);
}
}
//但是这么删除会出现意外情况
//当运行dt.Rows.RemoveAt(i)代码后DataTable的index会发生改变
//且他的dt.Rows.Count也会改变
//正确做法一
for (int i = dt.Rows.Count - 1; i >= 0; i--)
{
if (99 % i == 0)
{
dt.Rows.RemoveAt(i);
}
}
//正确做法二
for (int i = 0; i < dt.Rows.Count; i++)
{
if (99 % i == 0)
{
dt.Rows[i].Delete();
}
}
dt.AcceptChanges();//提交
//dt.RejectChanges();//回滚

C#中DataTable删除多条数据

原文:https://www.cnblogs.com/masonblog/p/12740715.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!