2012-06-22 103 views
1

我有一個數據表,我想構建一個XML。 我能夠得到迄今爲止...需要一些幫助。DataTable to XML

的DataTable

factory, item 
--------------- 
1, 123 
1, 345 
2, 999 

XML應該像

<test> 
<factory>1</factory> 
<items> 
    <item>123</item> 
    <item>345</item> 
</items> 
</test> 

IEnumerable<XElement> files = from f in dt.AsEnumerable() 
       select new XElement("test", 
        new XElement("factory", f["factory"]), 
        new XElement("item", new XElement("item",f["item"]))); 

上述查詢給我一個平坦的xml

<test> 
<factory>1</factory> 
<items> 
    <item>123</item> 
</items> 
</test> 
<test> 
<factory>1</factory> 
<items> 
    <item>345</item> 
</items> 
</test> 

回答

0

這將返回一個XElement,而不是一個IEnumerable<XElement>(其是邏輯如果你只想要一個<test>,我認爲:

var result= new XElement("test", dt 
           .AsEnumerable() 
           .GroupBy(m => m["factory"]) 
           .Select(f => 
             new XElement("factory", 
              f.Key, 
              new XElement("items", f.Select(g => 
               new XElement("item", g["item"]))))));