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

foreachの代わりにlinqメソッドを使用してそれを行うことができますが、大したことはありません。

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

ここでは、クエリを列挙するためにCount()メソッドが必要です。クエリを列挙するものなら何でもできます。

Selectをミューテーターとして使用するのが面倒な場合は(私と同じように)、代わりに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 に答える