0

我想从 XDocument 中选择元素并在单个 lambda 表达式中为每个元素添加一个属性。这就是我正在尝试的:

  xhtml.Root.Descendants()
            .Where(e => e.Attribute("documentref") != null)
            .Select(e => e.Add(new XAttribute("documenttype", e.Attribute("documentref").Value)));

这样做的正确方法是什么?

谢谢!

4

2 回答 2

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(...);
于 2012-11-15T20:12:10.510 回答
0
  xhtml.Root.Descendants()
            .Where(e => e.Attribute("documentref") != null)
            .ToList()
            .ForEach(e => e.Add( new.... ) );
于 2012-11-15T20:06:37.097 回答