2012-10-29 36 views
0

設置:XML - 從SQL Server以LINQ到XML

我有存儲在數據庫(SQL Server 2008的R2),其經由存儲的過程中檢索並放入一個DataTable一些XML數據。 DataTable有2列:DateTime「timestamp」和XML「info」。

從數據庫中提取此數據後,我想循環遍歷每行,並在C#中使用LINQ to XML對數據進行操作。

public static void ParseDataTable(DataTable dataTable) 
{ 
    for (int r = 0; r < dataTable.Rows.Count; r++) 
    { 
     // dataTable.Rows[r]["timestamp"].ToString() holds DateTime 
     // dataTable.Rows[r]["info"].ToString() holds XML 
    } 
} 

我的問題:

是什麼讓這個數據到一個對象,我可以使用LINQ最簡單的方法?應該使用什麼類型的對象?

此外:

  • 請不要問爲什麼XML存儲在數據庫中,或者推薦一個不同的存儲介質。不打算開始一場神聖的戰爭。
  • 如果xml應該作爲不同類型返回(例如,CAST([info] AS VARCHAR(MAX))),請告訴我。
  • 我寧願使用LINQ來解析對象,一旦我有了它,所以請不要推薦其他方法。

在此先感謝。

回答

2
XDocument doc = XDocument.Parse(dataTable.Rows[r]["info"].ToString()); 

然後您就可以linq away

+0

那麼容易!謝謝。我沒有偶然發現XDocument.Parse(),這使得它非常簡單。另外,鏈接回Jon Skeet的答案 - 永遠不錯。 :D –

+0

使用'XElement.Parse'可能會更好,除非所討論的XML是完整的文檔 - 請參閱[here](http://msdn.microsoft.com/zh-cn/library/bb675196.aspx)和[這裏](http://stackoverflow.com/questions/1671542/whats-the-difference-between-xelement-load-and-xdocument-load)。 –