将DataRow []转换为DataTable而不会丢失其DataSet

时间:2012-06-29 19:13:14

标签: c# datatable dataset datarow

我正在使用C#中的DataSet和DataTables。

我的第一个问题是如何将DataRow []对象转换为DataTable,我用这个链接解决了这个问题:

simple-way-to-convert-datarow-array-to-datatable

所以,我做的是以下内容:

// Gets the rows according to the relation
DataRow[] rows = someDataRow.GetChildRows("the_table_relation");
DataTable newDataTable = rows.CopyToDataTable<DataRow>();    

我使用的所有数据都在一个DataSet中,因此,我的问题是我的对象newDataTable不再包含对我的DataSet的引用(即newDataTable.DataSet等于{ {1}})。

有没有办法在不丢失对DataSet的引用的情况下进行转换?

希望有人可以帮助我。

提前致谢

3 个答案:

答案 0 :(得分:10)

据推测,您已经拥有一个DataTable?如果是这样,请使用overload of CopyToDataTable现有表作为参数:

rows.CopyToDataTable<DataRow>(existingTable, LoadOption.Upsert);

或者,您可以使用DataTableCollection.Add(DataTable)吗?

dataSet.Tables.Add(table);

答案 1 :(得分:4)

 DataView DV = MyDataTable.AsDataView();
 DV.RowFilter = "Id = '" + RecordId + "'";
 DataTable newDataTable = DV.ToTable();

答案 2 :(得分:1)

我相信解决方案可能包含在Jon Skeet的答案中 dataSet.Tables.Add(newDataTable)

问题是newDataTable没有DataSet子控件,而是DataSet父控件。也就是说,DataSet可以包含Tables,而newDataTable的DataSet是“拥有newDataTable的DataSet”,在上面创建的表的情况下,它是null,直到添加到DataSet。