我想从XDocument中选择元素,并在单个lambda表达式中为每个元素添加一个属性。这就是我正在尝试的:
xhtml.Root.Descendants()
.Where(e => e.Attribute("documentref") != null)
.Select(e => e.Add(new XAttribute("documenttype", e.Attribute("documentref").Value)));
这样做的正确方法是什么?
谢谢!
答案 0 :(得分:1)
由于延迟执行LINQ,如果语句的结果从未迭代过,则属性不会被添加到XML中。
var elementsWithAttribute = from e in xhtml.Root.Descendants()
let attribute = e.Attribute("documentref")
where attribute != null
select e;
foreach (var element in elementsWithAttribute)
element.Add(...);
答案 1 :(得分:0)
xhtml.Root.Descendants()
.Where(e => e.Attribute("documentref") != null)
.ToList()
.ForEach(e => e.Add( new.... ) );