2009-12-08 86 views
2

我正在从XML文件读取数据到强类型DataSet。数据以多个表格结尾;我可以针对它运行查询来创建一个非规范化的视图来显示在DataGrid查询数据集

样品输入:

<PeopleFile> 
    <address> 
     <street>123 Some Street</street> 
     <town>Anytown</town> 
     <resident> 
      <first>Jane</first> 
      <last>Doe</last> 
     </resident> 
     <resident> 
      <first>John</first> 
      <last>Doe</last> 
     </resident> 
    </address> 
    <address> 
     <street>456 Tree Street</street> 
     <town>Westwood</town> 
     <resident> 
      <first>Mary</first> 
      <last>Jones-Smith</last> 
     </resident> 
     <resident> 
      <first>Mike</first> 
      <last>Smith</last> 
     </resident> 
     <resident> 
      <first>Kate</first> 
      <last>Smith</last> 
     </resident> 
    </address> 
</PeopleFile> 

所需的输出:

123 Some Street Anytown  Jane Doe 
123 Some Street Anytown  John Doe 
456 Tree Street Westwood Mary Jones-Smith 
456 Tree Street Westwood Mike Smith 
456 Tree Street Westwood Kate Smith 

编辑:我要补充的是,除了每个文件多个表,我的真实数据也多个文件之间分割其AFAIK会需要被加载到单独的DataSets

回答

2

是的,使用Linq。有一组特殊的扩展称为Linq-to-Datasets。

您需要.NET 3.5明显,并添加using System.Data;

如果你的多个文件,跟着你应该能够将其读入和TypedDataSet的单独实例Merge()这些实例相同的模式。

+0

这些文件遵循几种不同的模式,所以至少Merge()ing不起作用。 – 2009-12-08 19:38:58

+0

表中还有一个Merge()。但是你需要详细说明数据集,例如表格是否有Id等。 – 2009-12-08 19:59:53

+0

是的。我的应用程序最初是使用XmlSerialization编写的,并且所有不同的对象都具有唯一性需要在代码中维护的关键值。远离这一点是我尝试改为读入DataSet的一个重要部分。 DataSet表示将一些对象分解为多个表(例如,A包含一个B数组);在这些情况下,密钥是手动创建的。 – 2009-12-08 20:06:04