Хммм ... Мне трудно точно обвести голову :))
Обычно, чтобы выяснить, есть ли какие-либо элементы, я бы использовал Any
- но вы хотите увидеть, есть ли хотя бы два элемента. Нам все еще не нужно использовать Count
, потому что наличие хотя бы двух элементов - это то же самое, что пропустить элемент и посмотреть, есть ли еще какие-либо элементы. Итак ...
var parents = familyTreeElement.Elements("Parent")
.Where(parent => parent.Elements("Child").Any(
child => child.Elements("Grandchild").Skip(1).Any()));
Я думаю, что это работает - и на самом деле это не читает слишком плохо:
Для каждого родителя посмотрите, есть ли у любого из них детей любых (больших) детей после игнорирования первого (большого) ребенка.
Я подозреваю, что использование XPath (согласно ответу Марка) будет наиболее читабельным вариантом.