次のような xml ドキュメントがあるとします。
<foo>
<bar id="9" />
<bar id="4" />
<bar id="3" />
</foo>
linq を使用して ID を 0、1、2 にリセットしたいと思います。これを行う最も簡単な方法は何ですか?
ありがとう
次のような xml ドキュメントがあるとします。
<foo>
<bar id="9" />
<bar id="4" />
<bar id="3" />
</foo>
linq を使用して ID を 0、1、2 にリセットしたいと思います。これを行う最も簡単な方法は何ですか?
ありがとう
XElement xml = GetXml();
var i = 0;
foreach (var e in xml.Elements("bar"))
e.SetAttributeValue("id", i++);
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));