我需要删除数据表(ADO.net)中的所有行.我不想在这里使用Foreach.
在一个单一的如何删除所有行.
然后我需要将数据表更新到数据库.
注意:我已经尝试过dataset.tables [0] .rows.clear和dataset.clear,但两者都无效
另外我不想使用sql删除查询.
如果你能提供答案,请发布除此之外的帖子.
'foreach'也不是这个问题的简单答案 - 你遇到的问题是枚举器不再对更改的集合有效.
这里的麻烦是,对于DataRowState.Added与Unchanged或Modified中的行,Delete()行为是不同的.如果你删除()一个添加的行,它只是从集合中删除它,因为无论如何数据存储大概都不会知道它.对未更改的行或已修改的行上的Delete()只是将其标记为已删除,而其他人已指示.
所以我最终实现了这样的扩展方法来处理删除所有行.如果有人有任何更好的解决方案,这将是伟大的.
public static void DeleteAllRows(this DataTable table) { int idx = 0; while (idx < table.Rows.Count) { int curCount = table.Rows.Count; table.Rows[idx].Delete(); if (curCount == table.Rows.Count) idx++; } }