DataTable到XML

时间:2012-06-22 19:42:43

标签: xml linq datatable using

我有一个数据表,我想构建一个xml。 我能够到目前为止......需要一些帮助。

数据表

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>

1 个答案:

答案 0 :(得分: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"]))))));