I want to delete all rows from datatable with rowstate property value Deleted.
DataTable dt;
dt.Clear(); // this will not set rowstate property to delete.
Currently I am iterating through all rows and deleting each row.
Is there any efficient way? I don't want to delete in SQL Server I want to use DataTable method.
8条答案
按热度按时间p4rjhz4m1#
我们采用的是这样一种方式:
iovurdzv2#
这将满足任何FK级联关系,如'delete'(即DataTable.Clear()不会):
20jt8wwn3#
wribegjk4#
我通常执行以下SQL命令:
eaf3rand5#
因为您使用的是SQL Server数据库,所以我建议您只执行SQL命令
"DELETE FROM " + dt.TableName
。sg3maiej6#
我会删除该表,这是删除所有内容的最快方法。然后重新创建该表。
jvidinwx7#
您可以在SQL Server数据库上创建一个存储过程来删除表中的所有行,从C#代码中执行该过程,然后重新查询数据表。
oxf4rvwz8#
Here is the solution that I settled on in my own code after searching for this question, taking inspiration from Jorge's answer.
This way, you ensure all rows either get deleted, or have their DataRowState set to Deleted.
Also, you won't get the InvalidOperationException due to modifying a collection while enumerating, because
foreach
isn't used. However, the infinite loop bug that Jorge's solution is vulnerable to isn't a problem here because the code will increment past a DataRow whose DataRowState has already been set to Deleted.