Предисловие: Существующий ответ С.Барлоу потрясающий, это просто еще один маршрут, по которому можно пойти.
Это один из способов сделать это, когда вам никогда не придется проходить весь цикл по исходной таблице (используя метод DataTable.Select()
):
DataTable table = new DataTable(); // This would be your existing DataTable
// Grab only the rows that meet your criteria using the .Select() method
DataRow[] newRows = table.Select("ClientID LIKE '%A-%' AND ClientID LIKE '%N6%'");
// Create a new table with the same schema as your existing one.
DataTable newTable = table.Clone();
foreach (DataRow r in newRows)
{
// Dump the selected rows into the table.
newTable.LoadDataRow(r.ItemArray, true);
}
А теперь у вас есть DataTable
только с теми строками, которые вы хотите. При необходимости в этот момент вы можете очистить исходную таблицу и заменить ее содержимым новой:
table.Clear();
table = newTable.Copy();
<ч />
Редактировать: Я думал об оптимизации памяти вчера вечером, вы можете просто перезаписать существующую таблицу, как только у вас появятся нужные вам строки, что исключает необходимость во временной таблице.
DataTable table = new DataTable(); // This would be your existing DataTable
// Grab only the rows that meet your criteria using the .Select() method
DataRow[] newRows = table.Select("ClientID LIKE '%A-%' AND ClientID LIKE '%N6%'");
// Clear out the old table
table.Clear();
foreach (DataRow r in newRows)
{
// Dump the selected rows into the table.
table.LoadDataRow(r.ItemArray, true);
}