Depende de lo que entendemos por 'eliminar'.
Si se refiere a los marcan como eliminado, simplemente llame al método Delete()
en cada fila como lo visita en su bucle. Luego debe llamar al AcceptChanges()
en la tabla de datos para finalizar la eliminación, presumiblemente después de actualizar su base de datos (si hay alguna involucrada).
foreach(DataRow row in someTable.Rows)
{
if(/* your condition here */)
row.Delete();
}
someTable.AcceptChanges();
Si se refiere a sacarlo de la DataTable, entonces usted necesita para hacerlo en dos pasos:
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);
}
Vale la pena señalar que siempre se puede utilizar el primer método para eliminar filas - ya que marcar las filas como Deleted
y aceptar cambios las eliminará automáticamente de la tabla. Pero, a veces es más claro y eficiente simplemente eliminar los objetos DataRow
de la colección Rows
.
+1 por esta gran explicación, ¡era algo preocupante con esto! – Jithu
Si hace lo mismo que lo que dijo LBushkin, verá lo siguiente: Se modificó la colección; la operación de enumeración podría no ejecutarse. así que está mal. – Szjdw
Siempre que invoque .AcceptChanges() antes de marcar filas como eliminadas (antes del bucle foreach), no obtendrá el error "La colección se modificó; la operación de enumeración podría no ejecutarse". El error aparece porque hay cambios pendientes que deben aceptarse. Si usa un bucle for, entonces no importará, pero en ese caso sería mejor iterar hacia atrás. – Soenhay