Reputation: 285
I am writing a method to convert datatable using LINQ. I was able to get straight forward conversion from datatable to XML as below:
XDocument doc = new XDocument(new XDeclaration("1.0","UTF-8","yes"),
new XElement("pfolios", from p in dt.AsEnumerable()
select new XElement("pfolio",
new XAttribute("ID", p.ID),
new XAttribute("Date", p.Date),
new XAttribute("Expired", p.Expiry))));
but I need some help to write a method, that takes datatable with any number of columns as input and write to xml something like this: This lamdba expression does not work but I am looking for a way to simplify this. Thanks in advance for your help
XElement xe = new XElement("pfolios", from p in dt.AsEnumerable()
select new XElement("pfolio",dt.AsEnumerable().ToList().ForEach(dc=> dt.Columns)
new XAttribute(dc.ColumnName, p[dc.ColumnName])));
Upvotes: 1
Views: 5539
Reputation: 6854
Try this
XElement container = new XElement("container");
using (XmlWriter w = container.CreateWriter()) {
DataTable.WriteXml(w, System.Data.XmlWriteMode.WriteSchema, true);
}
Upvotes: 3
Reputation: 888185
You're looking for
table.AsEumerable().Select(row =>
new XElement("row",
table.Columns.Cast<DataColumn>().Select(col =>
new XAttribute(col.ColumnName, row[col])
)
)
)
Upvotes: 2