2009-12-08 101 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