1

假设我有一个看起来像这样的 xml 文档

<foo>
<bar id="9" />
<bar id="4" />
<bar id="3" />
</foo>

我想使用 linq 将 id 重置为 0、1、2。最简单的方法是什么?

谢谢

4

2 回答 2

3
XElement xml = GetXml();
var i = 0;
foreach (var e in xml.Elements("bar"))
  e.SetAttributeValue("id", i++);
于 2008-11-21T16:42:32.230 回答
0

您可以使用 linq 方法而不是 foreach 来做到这一点,但没有太大的好处:

XElement xml = GetXml();
int updatedElements = xml.Elements("bar")
    .Select((x, i) =>
    {
        x.SetAttributeValue("id", i);
        return x;
    })
    .Count();

在这里,Count() 方法是枚举查询所必需的。任何枚举查询都可以。

如果使用 Select 作为 mutator 困扰您(就像我一样),请改用 List(T).ForEach:

XElement xml = GetXml();
xml.Elements("bar")
    .Select( (x, i) => new {x, i})
    .ToList()
    .ForEach(a => a.x.SetAttributeValue("id", a.i));
于 2008-11-21T19:09:13.653 回答