1

我有一个 linq to xml 查询,它返回 2 个节点。我正在尝试遍历这些节点并替换它们的内容。但是,添加到 XDocument 的内容包含符合我的查询条件的节点。

    protected internal virtual void AddLinkDocument(XDocument content, TaskRequest request)
    {
        var links = content.Descendants("some.link").Where(tag => tag.Attribute("document-href") != null);

        foreach (XElement link in links) //first time through there are 2 links found
        {
             //do some stuff

            link.ReplaceNodes(inlineContent); // after content is added, "links" now in foreach now has many new links found
        }
    }

为什么每次通过foreach动态更新集合“链接”?

谢谢您的帮助!

4

1 回答 1

0

似乎这里有几个因素在起作用:

  1. 按照您定义的方式links,每次迭代都会重新查询foreach.
  2. 重新查询将搜索与查询匹配的所有后代(不仅仅是直接子代)。

我的猜测是迭代块添加了一些与查询匹配的新元素(即,包含“document-href”属性)。

所以,我建议尝试:

  • ToArray()在定义的末尾添加 a links
  • 或使用Elements而不是Descendants仅查询content.
于 2012-09-04T16:23:45.377 回答