Best way add a new column with sequential numbering in an existing data table

Ananth picture Ananth · Nov 30, 2010 · Viewed 12k times · Source

I have a non empty datatable . What is the best way to add another column to it that has sequential numbering starting from 1.

I tried the following code. But did not work.

DataColumn dc = new DataColumn("Col1");
dc.AutoIncrement = true;
dc.AutoIncrementSeed = 1;
dc.AutoIncrementStep = 1;       
dc.DataType = typeof(Int32);
dt.Columns.Add(dc);

Will setting any expression help in this scenario ?

Thanks in Advance

Answer

Denis Ivin picture Denis Ivin · Nov 30, 2010

I think you could achieve that by using a 2nd "helper" data table that would contain just an auto-increment field and then you populate/merge it with the existing data, something like this:

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();

And then you would just return dtIncremented table instead of the original dt. Not an elegant solution but should work.