Ваш оператор LINQ
должен возвратить родительский элемент (того, который содержит атрибут from) через childEl.Parent
.
Из вашего вопроса не совсем ясно, является ли вашконтейнером является XDocument
или XElement
.
В случае XElement
оператор LINQ
выглядит следующим образом:
var q =
from childEl in container.Elements("Attr").Elements("Attr")
where childEl.Attribute("Name")?.Value == "from"
orderby childEl.Attribute("Value")?.Value descending
select childEl.Parent
;
изамените на:
container.ReplaceNodes(q);
Обратите внимание, что оператор LINQ
без явного указания имен элементов Attr
также сделает работу:
var q =
from childEl in container.Elements().Elements()
where childEl.Attribute("Name")?.Value == "from"
orderby childEl.Attribute("Value")?.Value descending
select childEl.Parent
;
В случае XDocument
ваш запрос должен выглядеть следующим образом:
var q =
from childEl in container.Element("Attrs").Elements("Attr").Elements("Attr")
where childEl.Attribute("Name")?.Value == "from"
orderby childEl.Attribute("Value")?.Value descending
select childEl.Parent
;
, и вам необходимо заменить узлы с помощью:
container.Element("Attrs").ReplaceAll(q);