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

时间:2016-09-22 13:27:22

标签: c# ado.net

我有一个包含5行的数据行阵列DataRow[] drRequest。 然后我使用foreach迭代每一行并使用

删除行
foreach (DataRow dr in drRequest) 
{
    dr.Delete();

但之后drRequest.Length返回5而不是0.

我无法使用Datatable,我需要使用DataRow[]

2 个答案:

答案 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});知道如何以最佳方式执行此操作。