c# foreach 循环datatable根据指定条件,删除指定的行
2012-08-21 14:52
435 查看
在C#中,如果要删除DataTable中的某一行,大约有以下几种办法:
1,使用DataTable.Rows.Remove(DataRow),或者DataTable.Rows.RemoveAt(index);可以直接删除行
标注一下:DataTable.Rows.Remove(DataRow) 当改行被删除以后,整个表的索引将重建,如果使用循环作为dataRow的index访问表格 则会出现错误,比如你要删除的数据没有删除完;这是因为 当你删除了第八行,i++之后 访问第九行数据,可是之前为第九行的数据由于删除了一行数据而为而索引为8 则访问漏掉了一行数据。
这里有我写的一个例子,大家可以看看:
for (int i = 0; i < history.Rows.Count; i++)//注意这里一定要用Datatable的Rows.count 作为循环条件终止的值,而不能用 一个定值,因为每当删除一条数据,表的行数会发生变化,访问的下标则不会和未删除之前的表一样。
{
if (!((lngX < 135.549864 && lngX > 73.27112) && (latY > 17.714548 && latY < 52.971885)))
{
history.Rows.Remove(history.Rows[i]);
i--;//删除之后原来索引为i+1 处的行索引会因为删去一行而变为i ,i-- 确保此条数据不被漏掉
}
}
2,datatable.Rows[i].Delete()。Delete()之后需要datatable.AccepteChanges()方法确认完全删除,因为Delete()只是将相应列的状态标志为删除,还可以通过datatable.RejectChanges()回滚,使该行取消删除。
1,使用DataTable.Rows.Remove(DataRow),或者DataTable.Rows.RemoveAt(index);可以直接删除行
标注一下:DataTable.Rows.Remove(DataRow) 当改行被删除以后,整个表的索引将重建,如果使用循环作为dataRow的index访问表格 则会出现错误,比如你要删除的数据没有删除完;这是因为 当你删除了第八行,i++之后 访问第九行数据,可是之前为第九行的数据由于删除了一行数据而为而索引为8 则访问漏掉了一行数据。
这里有我写的一个例子,大家可以看看:
for (int i = 0; i < history.Rows.Count; i++)//注意这里一定要用Datatable的Rows.count 作为循环条件终止的值,而不能用 一个定值,因为每当删除一条数据,表的行数会发生变化,访问的下标则不会和未删除之前的表一样。
{
if (!((lngX < 135.549864 && lngX > 73.27112) && (latY > 17.714548 && latY < 52.971885)))
{
history.Rows.Remove(history.Rows[i]);
i--;//删除之后原来索引为i+1 处的行索引会因为删去一行而变为i ,i-- 确保此条数据不被漏掉
}
}
for (int i = 0; i < history.Rows.Count; i++)//注意这里一定要用Datatable的Rows.count 作为循环条件终止的值,而不能用 一个定值,因为每当删除一条数据,表的行数会发生变化,访问的下标则不会和未删除之前的表一样。 { if (!((lngX < 135.549864 && lngX > 73.27112) && (latY > 17.714548 && latY < 52.971885))) { history.Rows.Remove(history.Rows[i]); i--;//删除之后原来索引为i+1 处的行索引会因为删去一行而变为i ,i-- 确保此条数据不被漏掉 } }
2,datatable.Rows[i].Delete()。Delete()之后需要datatable.AccepteChanges()方法确认完全删除,因为Delete()只是将相应列的状态标志为删除,还可以通过datatable.RejectChanges()回滚,使该行取消删除。
相关文章推荐
- 根据属性多少删除指定条件的重复记录!!!
- sql 根据指定条件获取一个字段批量获取数据插入另外一张表字段中+MD5加密
- 多条件组合查询,并根据指定类别找出所有最小子类别的SQL语句备忘
- SQL两表匹配,将A表的指定字段所有内容根据条件更新B表指定字段的所有内容
- 根据指定条件格式化DataGrid的列数据
- jQuery validate 根据上下文条件动态给字段添加或删除验证选项?
- 根据条件获取json(无限级)中指定的对象
- list集合根据条件删除元素
- linq 根据指定条件返回集合中不重复的元素
- 根据用户指定条件
- ArrayList根据指定条件移除元素和去重(java)
- mysql根据指定条件备份数据
- 根据某种条件定时删除Map中的key
- Elasticsearch 2.0以上版本根据条件批量删除Java如何实现
- elasticsearch 5.x Delete By Query API(根据条件删除)
- awk 根据条件输出指定的行
- Javascript根据指定下标或对象删除数组元素
- Java根据条件删除Map中元素
- java根据条件删除list集合中的实体类!