Поскольку вы работаете с DataTable и должны иметь возможность сохранять любые изменения обратно на сервер с помощью адаптера таблицы (см. Комментарии), вот пример того, как вы должны удалять строки:
DataTable dt;
// remove all rows where the last name starts with "B"
foreach (DataRow row in dt.Rows)
{
if (row["LASTNAME"].ToString().StartsWith("B"))
{
// mark the row for deletion:
row.Delete();
}
}
Вызов delete для строк изменит их свойство RowState на Deleted, но оставит удаленные строки в таблице. Если вам все еще нужно поработать с этой таблицей, прежде чем сохранять изменения обратно на сервер (например, если вы хотите отобразить содержимое таблицы за вычетом удаленных строк), вам нужно проверить RowState каждой строки, пока вы выполняете ее итерацию следующим образом :
foreach (DataRow row in dt.Rows)
{
if (row.RowState != DataRowState.Deleted)
{
// this row has not been deleted - go ahead and show it
}
}
Удаление строк из коллекции (как в ответе Бруно) сломает адаптер таблицы, и, как правило, этого не следует делать с DataTable.