Как ваш код сейчас, dsFirst
и dsSecond
не являются копиями исходного набора данных, но "указывают" на тот же набор данных!
Чтобы скопировать набор данных и удалить строки на ходу, я бы сделал следующее:
foreach (DataRow dr in ds.Tables[0].Rows)
{
int i = Convert.ToInt32(dr["ROWNUMBER"]);
if (i <= x || i >= y)
dsFirst.Tables[0].ImportRow(row);
}
dsFirst
должен быть новым набором данных с одной таблицей с точно такими же столбцами, что и ds
. Это импортирует только те строки в dsFirst
, которые соответствуют критериям удаления , а не .
Возможно, вы сможете создать копию ds
, содержащую соответствующие таблицы и определения столбцов, используя ds.Clone()
, но я еще не пробовал. Работа с типизированными наборами данных экономит вам много работы, поскольку вы можете создать столько экземпляров, сколько захотите, и все таблицы и столбцы уже определены.