XDocument как получить родителя двух узлов, которые не находятся на одном уровне - PullRequest
0 голосов
/ 12 сентября 2018

Каков наилучший подход для получения ближайшего родителя двух узлов, которые не находятся на одном уровне в документе XML через linq?

1 Ответ

0 голосов
/ 12 сентября 2018

Простой способ найти ближайшего общего предка - собрать всех предков первого элемента в хэш-набор, а затем найти первого предка второго элемента в наборе:

XElement element1 = ...
XElement element2 = ...
var ancestors = new HashSet<XElement>(element1.Ancestors());
var common = element2.Ancestors().First(a => ancestors.Contains(a));

Этот подход эффективен для небольшого числа запросов относительно небольших наборов данных XML.Если ожидается, что число запросов для самого низкого общего предка будет большим, вам может потребоваться более продвинутый алгоритм для решения проблемы LCO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...