如何解决如何从数据表中删除所有行
| 我想从数据表中删除具有rowstate属性值Deleted的所有行。DataTable dt;
dt.Clear(); // this will not set rowstate property to delete.
目前,我正在遍历所有行并删除每一行。
有什么有效的方法吗?
我不想在sql Server中删除,我想使用DataTable方法。解决方法
我们使用这种方式:
for(int i = table.Rows.Count - 1; i >= 0; i--) {
DataRow row = table.Rows[i];
if ( row.RowState == DataRowState.Deleted ) { table.Rows.RemoveAt(i); }
}
,这将满足任何FK级联关系,例如\'delete \'(DataTable.Clear()不会):
DataTable dt = ...;
// Remove all
while(dt.Count > 0)
{
dt.Rows[0].Delete();
}
,dt.Rows.Clear();
dt.Columns.Clear(); //warning: All Columns delete
dt.Dispose();
,由于您使用的是SQL Server数据库,因此我主张仅执行SQL命令“ 4”。,我将删除该表,这是删除所有内容的最快方法。然后重新创建表。,您可以在SQL Server db上创建一个存储过程,该存储过程将删除表中的所有行,从C#代码执行该存储过程,然后重新查询数据表。,这是我从Jorge的答案中得到启发后,在搜索此问题后在自己的代码中确定的解决方案。
DataTable RemoveRowsTable = ...;
int i=0;
//Remove All
while (i < RemoveRowsTable.Rows.Count)
{
DataRow currentRow = RemoveRowsTable.Rows[i];
if (currentRow.RowState != DataRowState.Deleted)
{
currentRow.Delete();
}
else
{
i++;
}
}
这样,您可以确保所有行要么被删除,要么将其DataRowState设置为Deleted。
另外,由于在枚举时修改集合,因此不会获得InvalidOperationException,因为未使用foreach
。但是,Jorge解决方案容易受到的无限循环错误在这里不是问题,因为代码将通过DataRowState已设置为Deleted的DataRow递增。,我通常执行以下SQL命令:
DELETE FROM TABLE WHERE ID>0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。