【问题标题】:Convert a DataRow[] to DataTable without losing its DataSet将 DataRow[] 转换为 DataTable 而不会丢失其 DataSet
【发布时间】:2012-07-01 07:57:18
【问题描述】:

我正在使用 C# 中的数据集和数据表。

我的第一个问题是如何将 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>();    

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

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

希望有人可以帮助我。

提前致谢

【问题讨论】:

  • 请告诉我们更多关于您已经拥有的数据集的信息...
  • 没什么特别的,就是一个DataSet,里面有一些表和它们之间的关系

标签: c# datatable dataset datarow


【解决方案1】:

大概你已经拥有一个DataTable?如果是这样,请使用overload of CopyToDataTable,它将 existing 表作为参数:

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

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

dataSet.Tables.Add(table);

【讨论】:

  • 感谢您的回复,但不幸的是,由于某些原因,我需要将 DataRow[] 对象转换为新的 DataTable 而不会丢失其 DataSet 引用
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:
     DataView DV = MyDataTable.AsDataView();
     DV.RowFilter = "Id = '" + RecordId + "'";
     DataTable newDataTable = DV.ToTable();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-14
      • 2012-07-16
      • 1970-01-01
      • 2010-10-29
      • 2018-10-31
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多