繁体   English   中英

为什么删除行后DataTable.Rows.Count不改变?

[英]Why does the DataTable.Rows.Count not change after deleting rows?

在我的项目中,我需要删除DataTable中的所有记录,因此我尝试了以下代码:

while (DataTable1.Rows.Count > 0)
    DataTable1.Rows[0].Delete();

但这是一个无限循环,似乎在Delete()语句之后, Rows.Count不会更改。

似乎记录仍然存在,但标记为删除。
因此,我将计数更改为:

int count = DataTable1.Select("", "", DataViewRowState.CurrentRows).Count();

所以现在我可以像这样改变循环

int count = DataTable1.Select("","",DataViewRowState.CurrentRows).Count();
while (count > 0)
{
    DataTable1.Rows[0].Delete(); // THIS IS WRONG NOW
    count = DataTable1.Select("","",DataViewRowState.CurrentRows).Count();
}

现在,计数确实按预期递减,但是现在我对Rows[0].Delete()语句有Rows[0].Delete()

它将一遍又一遍删除同一行。

所以我的问题是,如何找到未删除的第一行并将其删除?
换句话说,用//注释的行现在不正确,我可以在该行使用什么?

还是有更好的方法来做到这一点? 我尝试了DataTable1.Clear(),但是在执行adapter.Update(DataTable1);时不会生成delete语句adapter.Update(DataTable1);

如果要标记所有行已删除,为什么不使用普通的foreach -loop?

foreach(DataRow row in DataTable1.Rows) row.Delete();

Delete会将这一行标记为Deleted ,这对于DataAdapters很重要,它们将调用其DeleteCommand来从数据库中删除该行。 但是它不会立即从DataTable删除该行。 如果要从表中删除它,请使用DataTable.Rows.RemoveAt(index)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM