Я могу использовать XDocument для создания следующего файла, который отлично работает :
XDocument xdoc = new XDocument
(
new XDeclaration("1.0", "utf-8", null),
new XElement(_pluralCamelNotation,
new XElement(_singularCamelNotation,
new XElement("id", "1"),
new XElement("whenCreated", "2008-12-31")
),
new XElement(_singularCamelNotation,
new XElement("id", "2"),
new XElement("whenCreated", "2008-12-31")
)
)
);
Однако , мне нужно создать файл XML путем итерации по коллекции следующим образом:
XDocument xdoc = new XDocument
(
new XDeclaration("1.0", "utf-8", null));
foreach (DataType dataType in _dataTypes)
{
XElement xelement = new XElement(_pluralCamelNotation,
new XElement(_singularCamelNotation,
new XElement("id", "1"),
new XElement("whenCreated", "2008-12-31")
));
xdoc.AddInterally(xelement); //PSEUDO-CODE
}
Существует Добавить , AddFirst , AddAfterSelf , AddBeforeSelf , но я не смог заставить ни одного из них работать в этом контексте.
Возможна ли подобная итерация с LINQ?
Ответ:
Я взял предложение кода Джимми с корневым тегом, немного изменил его, и это было именно то, что я искал:
var xdoc = new XDocument(
new XDeclaration("1.0", "utf-8", null),
new XElement(_pluralCamelNotation,
_dataTypes.Select(datatype => new XElement(_singularCamelNotation,
new XElement("id", "1"),
new XElement("whenCreated", "2008-12-31")
))
)
);
Марк Гравелл опубликовал лучший ответ на этот на этот вопрос StackOverflow .