在c#中删除DataRow[]中的行

本文关键字:DataRow 删除 | 更新日期: 2023-09-27 18:08:22

我有一个数据数组DataRow[] drRequest,有5行。然后我使用foreach迭代每一行,并使用

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

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

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

在c#中删除DataRow[]中的行

DataRow.Delete不会从DataTable中删除这一行。它只是将这一行标记为"如果您使用DataAdapter并调用DataAdapter . update,将从数据源中删除"。如果你想删除它,使用Remove:

foreach (DataRow dr in drRequest) 
{
    dr.Table.Rows.Remove(dr);
}

如果drRequest真的是DataRow[],那么它将总是有长度(无论它开始是什么)。数组永远不会改变长度。从来没有。你可以null的值,但是…这可能不是稍后查看数组的其他代码所期望的。这只是数组的一个特性

可以考虑另一种数据结构。例如,可以List<T>中删除内容。但请注意,在幕后,这涉及到洗牌。如果您有选择地删除东西,那么list.RemoveAll(x => {return true to remove, false to keep});知道如何最佳地执行此操作。