此代码有效:
var element = XElement.Parse("<div><span><em>Content</em></span><span><em>Content2</em></span></div>");
var spans = element.Descendants("span").ToList();
foreach(var span in spans)
{
span.ReplaceWith(span.Nodes());
}
这不会,给出错误“对象引用未设置为对象的实例。”:
var element = XElement.Parse("<div><span><em>Content</em></span><span><em>Content2</em></span></div>");
var spans = element.Descendants("span");
foreach(var span in spans)
{
span.ReplaceWith(span.Nodes());
}
唯一的区别是我在创建后代节点列表时删除了“ToList()”。为什么是这样?
IQueryable 实现了 IEnumerable,我认为迭代强制延迟执行,那么为什么 'ToList()' 在这里有所作为呢?