在列表seriesDetails
的帮助下,使用LINQ Im生成示例XML,
var result=
from sc in seriesDetails
select new XElement("A",
new XAttribute("id", sc.A),
new XElement("B",sc.B),
new XAttribute("id", sc.B));
如下所述生成示例XML,
<A id="asdf">
<B id="qwer" />
</A>
<A id="sdfg">
<B id="bmnm" />
</A >
我需要为sequence
标记添加另一个名为<A>
的属性,该属性应该是列表seriesDetails
中的行号。
预期产出:
<A id="asdf" sequence="1">
<B id="qwer" />
</A>
<A id="sdfg" sequence="2">
<B id="bmnm" />
</A >
任何帮助表示赞赏:)
答案 0 :(得分:1)
您可以使用Enumerable.Select方法提供行号(即元素索引):
from x in seriesDetails.Select((sc, i) => new { sc, sequence = i + 1 })
select new XElement("A",
new XAttribute("id", x.sc.A),
new XAttribute("sequence", x.sequence),
new XElement("B", // do not provide inner text to element B
new XAttribute("id", x.sc.B)));
另一种选择是在查询之外引入新变量,这将保留行号
int sequence = 0;
var result=
from sc in seriesDetails
select new XElement("A",
new XAttribute("id", sc.A),
new XAttribute("sequence", ++sequence),
new XElement("B",
new XAttribute("id", sc.B)));