我记得rows.delete只是记下删除标志,实际上未删除行的,需要用AcceptChanges提交才会删除datatable中的数据,但我刚才试了一下没有用AcceptChanges提交就直接删除了,是我记忆有错误吗?
我的代码是这样的
for (i = 0; i < dt_trans.Rows.Count; i++) {
ksdm = dt_trans.Rows[i]["trans_ctloc_dr"].ToString();
llzdm = dt_trans.Rows[i]["llzdm"].ToString();
if (llzdm == "")
{ }
else {
if (llzdm.Substring(0, 3) == ksdm)
{ }
else {
dt_trans.Rows[i].Delete();
}
}
}
dt_trans.AcceptChanges();
for循环里Rows[i].Delete()直接就删掉数据了,导致后面的dt_trans.Rows.Count发生变化,执行出错了,我明明记得不提交是不删除数据的,好奇怪
我的代码是这样的
for (i = 0; i < dt_trans.Rows.Count; i++) {
ksdm = dt_trans.Rows[i]["trans_ctloc_dr"].ToString();
llzdm = dt_trans.Rows[i]["llzdm"].ToString();
if (llzdm == "")
{ }
else {
if (llzdm.Substring(0, 3) == ksdm)
{ }
else {
dt_trans.Rows[i].Delete();
}
}
}
dt_trans.AcceptChanges();
for循环里Rows[i].Delete()直接就删掉数据了,导致后面的dt_trans.Rows.Count发生变化,执行出错了,我明明记得不提交是不删除数据的,好奇怪
dt_trans这个的数据是怎么生成的?
DataRow[] 筛选已有数据 = 缓存数据表.Tables["啊啊啊"].Select("_ID ='" + 保存ID.ToString() + "'");
int 缓存表索引 = 缓存数据表.Tables["啊啊啊"].Rows.IndexOf(筛选已有数据[0]);
缓存数据表.Tables["啊啊啊"].Rows[缓存表索引].Delete();/*删除按条件选定的数据行*/
2013年06月20日→星座:双子座
癸巳〖蛇〗、戊午月、丁巳日、戊申时
二〇一三年、五月、十三
今属:火;五行:水火土金;缺:木。
纳音五行:长流水。
可以参考MSDN
http://technet.microsoft.com/zh-cn/magazine/system.data.datarow.delete(VS.90).aspx