Это должно сработать. Он упорядочивает дочерние узлы корня на основе их содержимого, а затем изменяет их порядок в документе. Вероятно, это не самый эффективный способ, но, судя по вашим тегам, вы хотели видеть его с помощью LINQ.
static void Main(string[] args)
{
XDocument doc = new XDocument(
new XElement("root",
new XElement("one", 1),
new XElement("two", 2)
));
var results = from XElement el in doc.Element("root").Descendants()
orderby el.Value descending
select el;
foreach (var item in results)
Console.WriteLine(item);
doc.Root.ReplaceAll( results.ToArray());
Console.WriteLine(doc);
Console.ReadKey();
}