XDocument如何获取不在同一级别的两个节点的父节点
XDocument how to get parent of two nodes, that are not on the same level
通过 linq 在 XML 文档中获取不在同一级别的两个节点的最近父节点的最佳方法是什么?
寻找最近共同祖先的一种简单方法是将第一个元素的所有祖先收集到一个散列集中,然后找到集合中第二个元素的第一个祖先:
XElement element1 = ...
XElement element2 = ...
var ancestors = new HashSet<XElement>(element1.Ancestors());
var common = element2.Ancestors().First(a => ancestors.Contains(a));
这种方法对于在相对较小的 XML 数据集上进行少量查询非常有效。如果最低共同祖先的查询数量预计很高,你可能需要一个more advanced algorithm来解决LCO问题。
通过 linq 在 XML 文档中获取不在同一级别的两个节点的最近父节点的最佳方法是什么?
寻找最近共同祖先的一种简单方法是将第一个元素的所有祖先收集到一个散列集中,然后找到集合中第二个元素的第一个祖先:
XElement element1 = ...
XElement element2 = ...
var ancestors = new HashSet<XElement>(element1.Ancestors());
var common = element2.Ancestors().First(a => ancestors.Contains(a));
这种方法对于在相对较小的 XML 数据集上进行少量查询非常有效。如果最低共同祖先的查询数量预计很高,你可能需要一个more advanced algorithm来解决LCO问题。