How can I delete specific DataRows within a loop of a DataTable rows which meet a custom condition -lets say the rows having an index of even number-? (Without using LINQ)
Thanks
It depends on what you mean by 'delete'.
If you mean mark them as deleted, just call the Delete()
method on each row as you visit it in your loop. You then need to call AcceptChanges()
on the data table to finalize the delete - presumably after you update your database (if one is involved).
foreach( DataRow row in someTable.Rows )
{
if( /* your condition here */ )
row.Delete();
}
someTable.AcceptChanges();
If you mean remove it from the DataTable, then you need to do so in two passes:
List<DataRow> rowsToDelete = new List<DataRow>();
foreach( DataRow row in someTable.Rows )
{
if( /* your condition here */ )
{
rowsToDelete.Add( row );
}
}
foreach( DataRow row in rowsToDelete )
{
someTable.Rows.Remove( row );
}
It's worth pointing out that you can always use the first method to remove rows - since marking rows as Deleted
and then accepting changes will automatically remove them from the table. But, sometimes it is more clear and efficient to simply remove the DataRow
objects from the Rows
collection.