我正在尝试为列表Journey
中的每个对象List<Journey> journeys
构建一个应输出的XML文档:
<Journeys>
<id>1</id>
<length>28</length>
<id>2</id>
<length>44</length>
etc.
</Journeys>
我尝试使用以下代码使用LINQ to XML:
var journeyElement = new XElement("Journeys",
journeys.Select(j =>
new XElement("id", j.id),
new XElement("length", j.length));
这显然不是预期的语法。
var journeyElement = new XElement("Journey",
journeys.Select(j => new
{
id = new XElement("id", j.id),
length = new XElement("length", j.length)
}));
哪个没有产生预期的结果。
如何使用LINQ to XML从XElement
在同一级别上创建一对List
?
答案 0 :(得分:2)
您可以将每个var journeyElement = new XElement("Journeys",
journeys.SelectMany(j => new[] { new XElement("id", j.id), new XElement("length", j.length) }));
投影到两个元素的数组中,然后将它们展平为一个包含SelectMany
的列表:
<Journeys>
<id>1</id>
<length>28</length>
<id>2</id>
<length>44</length>
</Journeys>
这会生成所需的XML:
struct
答案 1 :(得分:-1)
如果您可以像这样更改XML结构,
<Journeys>
<Journey>
<id>1</id>
<length>28</length>
</Journey>
<Journey>
<id>2</id>
<length>44</length>
</Journey>
etc.
</Journeys>
此代码可以使用。
List<Journey> journeys;
var journeyElement = new XElement("Journeys",
journeys.Select(j =>
new XElement("Journey",
new XElement("id", j.id),
new XElement("length", j.length)
)
)
);