将 dataRow 转移到新数据集

Posted

技术标签:

【中文标题】将 dataRow 转移到新数据集【英文标题】:transfer dataRow to new dataset 【发布时间】:2009-07-30 12:03:04 【问题描述】:

我有一个从复杂的 xml 结构中读取的数据集....

为了这个问题,这是它的基本版本

<cars>
    <car>
       <carName>Golf</carName>
       <engine>
          <model></model>
       </engine>
    <//car>
    <car>
       <carName>Dodge</carName>
       <engine>
          <model></model>
       </engine>
    <//car>
 </cars>

首先我创建数据集以获取整个文档....(我从文件中读取)

 DataSet dsCars = new DataSet();
 dsConfiguration.ReadXml("allcars.xml"));

接下来我想遍历所有汽车行.. 为此,我使用以下代码:

 foreach(DataRow carDataRow in dsCars.Tables["Car"].Rows)

现在在这个循环中,我想将汽车行(及其所有子内容)注入一个新数据集

所以在 foreach 循环中我有代码

    创建新数据集 创建一个新的数据表 = CarList2 使用以下命令导入行: tempTaskTable2.ImportRow(carDataRow);

但是当我使用以下命令序列化到文件时: tempTaskDS.WriteXml(@"c:\test.xml");

新创建的数据表 = Carlist2 是空白的,根本不包含任何数据...

我做错了什么?

【问题讨论】:

我认为您正在添加引用。你使用了 clone() 方法吗? 不是我用了dataTable的导入行功能。 每辆车都有一个新数据集? 【参考方案1】:

我不确定您要做什么,但您可以在循环中尝试:

DataSet tempTaskDS = new DataSet("tempCars");
tempTaskDS.Tables.Add("Cars");
tempTaskDS.Tables[0].Rows.Add(carDataRow);

【讨论】:

【参考方案2】:

首先确保您的目标 DataSet / DataTable 在列数、列类型等方面与源 DataSet / DataTable 相同 然后使用

targetDataSet.Tables["CarList2"].ImportRow(sourceRow)

【讨论】:

以上是关于将 dataRow 转移到新数据集的主要内容,如果未能解决你的问题,请参考以下文章

如何在数据集c#中向现有数据表添加行?

将数据透视到新的列名 - Oracle SQL

即使 AllowDBNull = False,数据集也允许 Null 值?

向数据集添加行

C# 获取两个DataTable 的交集并集差集

如何检查 DataTable 是不是包含 DataRow?