Класс XPathExpression позволяет добавлять спецификации сортировки.
Вот пример кода, который должен работать с .NET 2.0:
XPathDocument doc = new XPathDocument(@"..\..\XMLFile1.xml");
XPathNavigator nav = doc.CreateNavigator();
XPathExpression exp = nav.Compile("Messages/Message");
exp.AddSort(
"number(concat(substring(date, 7), substring(date, 4, 2), substring(date, 1, 2)))",
XmlSortOrder.Descending,
XmlCaseOrder.None,
null,
XmlDataType.Number
);
foreach (XPathNavigator msg in nav.Select(exp))
{
Console.WriteLine(
"{0}: {1}",
msg.SelectSingleNode("date").Value,
msg.SelectSingleNode("messagetext").Value
);
}
С XMLFile1.xml, равным
<Messages>
<Message>
<messagetext>Message 2</messagetext>
<date>04.02.2010</date>
</Message>
<Message>
<messagetext>Message 1</messagetext>
<date>05.02.2010</date>
</Message>
<Message>
<messagetext>Message 3</messagetext>
<date>05.02.2009</date>
</Message>
</Messages>
вывод
05.02.2010: Message 1
04.02.2010: Message 2
05.02.2009: Message 3
Предполагаемый формат даты - ddmmyyyy, но вы можете при необходимости изменить эти выражения подстроки, если хотите mmddyyyy.