DataTable already belongs to another DataSet
Try calling this method:
DataTable dt = dv.ToTable.DefaultView.ToTable(False, strSelectedCols)).Tables(0).Clone()
This will create a copy of the DataTable
and assign it to the target DataSet
:
ds.Tables.Add(dt)
Like the other responses point out, the error you're seeing is because the DataTable you're attempting to add to a DataSet is already a part of a different DataSet.
One solution is to Copy the DataTable and assign the copy to the other DataSet.
dtCopy = dataTable.Copy()
ds.Tables.Add(dtCopy)
The copied DataTable will have the structure and data of the copied DataTable.
If you only want the structure of the DataTable, call Clone instead.
dtCopy = dataTable.Clone()
The accepted answer isn't very good. Cloning should always be a last option.
Here's a way around the problem without incurring the overhead of cloning.
DataSet ds = GetData1();
DataSet ds2 = GetData2();
//Assuming you know you've got good data
DataTable dt = ds2.Tables[0];
ds2.Tables.Remove(dt);
dt.TableName = "PortedTable";//you may need to change the table name to prevent conflicts
ds.Tables.Add(dt);