代码之家  ›  专栏  ›  技术社区  ›  GuidoG

为什么数据表。排。删除行后计数是否不变?

  •  3
  • GuidoG  · 技术社区  · 8 年前

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

    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() 陈述

    所以我的问题是,我怎么才能找到第一行没有被删除的,并删除它?
    换句话说,用//THIS注释的行现在是错误的,我可以在该行使用什么?

    adapter.Update(DataTable1);

    1 回复  |  直到 8 年前
        1
  •  5
  •   Martin Brown    8 年前

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

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

    Delete 将此行标记为 Deleted DeleteCommand 从数据库中删除此行。但它不会从 DataTable DataTable.Rows.RemoveAt(index) .