我有一个包含5行的数据行阵列DataRow[] drRequest
。
然后我使用foreach
迭代每一行并使用
foreach (DataRow dr in drRequest)
{
dr.Delete();
但之后drRequest.Length
返回5而不是0.
我无法使用Datatable
,我需要使用DataRow[]
答案 0 :(得分:5)
DataRow.Delete
并未从foreach (DataRow dr in drRequest)
{
dr.Table.Rows.Remove(dr);
}
中删除此行。如果您使用DataAdapter并调用dataAdapter.Update"它只会将此行标记为"将从数据源中删除。如果要删除它,请使用Remove
:
{{1}}
答案 1 :(得分:2)
如果drRequest
确实是DataRow[]
,则始终具有长度(无论开始时是什么)。数组永远不会改变长度。决不。你可以null
一个值,但是......以后任何其他代码都可能无法预料到这个值。这只是数组 的一个特性。
您可能会考虑替代数据结构。例如,您可以从List<T>
中删除内容。但请注意,在幕后这涉及到一个随机播放。如果您有选择地删除内容,则list.RemoveAll(x => {return true to remove, false to keep});
知道如何以最佳方式执行此操作。