2011-08-31 87 views
1

我面對我的服務有問題,一個數據集將填補,並轉換成一個序列化的XML對象:轉換的XDocument到了IEnumerable <詞典<字符串,對象>>

string xmlString; 
System.Xml.Serialization.XmlSerializer oSerializer = new System.Xml.Serialization.XmlSerializer(typeof(DataSet)); 
DataSet ds = new DataSet(); 
StringBuilder sb = new StringBuilder(); 
using (StringWriter sw = new StringWriter(sb)) 
{ 
    oSerializer.Serialize(sw, ds); 
    xmlString = sb.ToString(); 
} 

此代碼返回我一個DataSet :

<?xml version="1.0" encoding="utf-16"?> 
<DataSet> 
    <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:Locale=""> 
     <xs:complexType> 
     <xs:choice minOccurs="0" maxOccurs="unbounded"> 
      <xs:element name="Table"> 
      <xs:complexType> 
       <xs:sequence> 
       <xs:element name="ID" type="xs:int" minOccurs="0" /> 
       <xs:element name="CheckboxCol" type="xs:int" minOccurs="0" /> 
       <xs:element name="Last_x0020_Name" type="xs:string" minOccurs="0" /> 
       <xs:element name="First_x0020_Name" type="xs:string" minOccurs="0" /> 
       <xs:element name="User_x0020_Group" type="xs:string" minOccurs="0" /> 
       </xs:sequence> 
      </xs:complexType> 
      </xs:element> 
     </xs:choice> 
     </xs:complexType> 
    </xs:element> 
    </xs:schema> 
    <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> 
    <NewDataSet> 
     <Table diffgr:id="Table1" msdata:rowOrder="0"> 
     <ID>1</ID> 
     <CheckboxCol>0</CheckboxCol> 
     <Last_x0020_Name>patel</Last_x0020_Name> 
     <First_x0020_Name>krunal</First_x0020_Name> 
     </Table> 
     <Table diffgr:id="Table2" msdata:rowOrder="1"> 
     <ID>46</ID> 
     <CheckboxCol>0</CheckboxCol> 
     <Last_x0020_Name>123</Last_x0020_Name> 
     <First_x0020_Name>123</First_x0020_Name> 
     <User_x0020_Group>123</User_x0020_Group> 
     </Table> 
     <Table diffgr:id="Table3" msdata:rowOrder="2"> 
     <ID>47</ID> 
     <CheckboxCol>0</CheckboxCol> 
     <Last_x0020_Name>def</Last_x0020_Name> 
     <First_x0020_Name>abc</First_x0020_Name> 
     <User_x0020_Group /> 
     </Table> 
    </NewDataSet> 
    </diffgr:diffgram> 
</DataSet> 

現在我不知道如何閱讀或轉化爲List<Dictionary<string, object>>,或者我可以綁定到一個Silverlight Datagrid的任何其他對象。

回答

0

不知道我確切地理解你在問什麼,但你可能想嘗試XDocument.Parse來加載你的文檔。然後使用LINQ生成一個列表...我不會爲你鍵入了一切,但在某些時候,你可能想要做這樣的事情:

XDocument xdoc = XDocument.Parse(xmlString); 
... 
... 
List<Dictionary<string, object>> list = xdoc.Root.Elements().Where(e=>e.Name.LocalName == "diffgram").Select(col => new Dictionary<string, object>() { { col.Name.LocalName.ToString(), col.Value } }).ToList(); 

問候, 斯蒂芬

+0

我認爲這個問題已經足夠具體,英語已經足夠好了。我已經看到更糟的,但設法得到的重點。 – AnthonyWJones

+0

好的...抱歉。我不習慣在這裏回答問題。以爲我今天就試試:) –

+0

我收到錯誤 'List > list = myDoc.Root.Elements()。Where(e => e.Name.LocalName ==選擇(col => new Dictionary (){** new ** KeyValuePair ()** {** col.Name,col.Value}})。ToList ();' 方法'Add'沒有超載需要1個參數\t 無法使用集合初始化程序初始化類型'System.Collections.Generic.KeyValuePair ',因爲它沒有實現'System.Collections.IEnumerable ' – Chirag

相關問題