Я думаю, что вы могли бы добиться этого, используя 2-ю вспомогательную таблицу данных, которая будет содержать только поле автоинкремента, а затем заполнить / объединить его с существующими данными, что-то вроде этого:
DataTable dtIncremented = new DataTable(dt.TableName);
DataColumn dc = new DataColumn("Col1");
dc.AutoIncrement = true;
dc.AutoIncrementSeed = 1;
dc.AutoIncrementStep = 1;
dc.DataType = typeof(Int32);
dtIncremented.Columns.Add(dc);
dtIncremented.BeginLoadData();
DataTableReader dtReader = new DataTableReader(dt);
dtIncremented.Load(dtReader);
dtIncremented.EndLoadData();
И тогда вы просто вернете dtIncremented table вместо исходного dt.Не элегантное решение, но должно работать.