我有一個帶有5行的數據行數組DataRow[] drRequest
。 然後我循環使用從C#中的DataRow []中刪除行
foreach (DataRow dr in drRequest)
{
dr.Delete();
但事後drRequest.Length
將返回5而不是0
使用foreach
和刪除行的每一行,我不能使用Datatable
,我需要使用DataRow[]
我有一個帶有5行的數據行數組DataRow[] drRequest
。 然後我循環使用從C#中的DataRow []中刪除行
foreach (DataRow dr in drRequest)
{
dr.Delete();
但事後drRequest.Length
將返回5而不是0
使用foreach
和刪除行的每一行,我不能使用Datatable
,我需要使用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});
知道如何最佳地做到這一點。
沒有使用這一行的好處:( – Devendra
@Devendra:你不能修改數組,它有一個固定的大小,所以如果你想這樣做,你必須重新賦值:'drRequest = drRequest [0] .Table 。選擇();' –