2012-10-29 2 views
0

설정 :XML - LINQ에 SQL 서버에서 XML에

내가 저장된 프로 시저를 통해 검색 및 DataTable을에 배치 된 데이터베이스 (SQL 서버 2008 R2)에 저장된 일부 XML 데이터를 가지고있다. DataTable에는 DateTime "타임 스탬프"와 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

해당 XML이 전체 문서가 아닌 한'XElement.Parse'를 사용하는 것이 더 좋습니다 - [here] (http://msdn.microsoft.com/en-us/library/bb675196.aspx) 및 [여기] (http://stackoverflow.com/questions/1671542/whats-the-difference-between-xelement-load-and-xdocument-load). –