C# 正在从C中的DataRow[]删除行#

C# 正在从C中的DataRow[]删除行#,c#,ado.net,C#,Ado.net,我有一个包含5行的datarow数组datarow[]drRequest。 然后我使用foreach迭代每一行,并使用 foreach (DataRow dr in drRequest) { dr.Delete(); 但是之后,drRequest.Length返回5而不是0 我不能使用Datatable,我需要使用DataRow[]不会从Datatable中删除此行。它只是将此行标记为“如果使用DataAdapter并调用DataAdapter.Update,将从数据源中删除”。如果

我有一个包含5行的datarow数组
datarow[]drRequest
。 然后我使用
foreach
迭代每一行,并使用

foreach (DataRow dr in drRequest) 
{
    dr.Delete();
但是之后,
drRequest.Length
返回5而不是0

我不能使用
Datatable
,我需要使用
DataRow[]

不会从
Datatable
中删除此行。它只是将此行标记为“如果使用DataAdapter并调用DataAdapter.Update,将从数据源中删除”。如果要删除它,请使用:


如果
drRequest
确实是一个
DataRow[]
,那么它将始终具有长度(不管它是从什么开始的)。数组从不更改长度。从未。您可以
null
从中提取一个值,但是。。。这可能不是其他代码稍后查看数组时所期望的。这只是阵列的一个特性


你可以考虑另一种数据结构。例如,您可以从

列表中删除内容。但请注意,在幕后,这涉及到一次洗牌。如果您有选择地删除内容,则
list.RemoveAll(x=>{return true表示删除,false表示保留})
知道如何以最佳方式执行此操作。

使用此行没有任何好处:(@Devendra:您无法修改数组,它具有固定的大小。因此,如果要这样做,您必须重新分配它:
drRequest=drRequest[0]。Table.Select();
foreach (DataRow dr in drRequest) 
{
    dr.Table.Rows.Remove(dr);
}