According to the docs, XmlTextReader Represents a reader that provides fast, non-cached, forward-only access to XML data. Thus it isn't really sufficient for sorting XML data, as sorting requires comparing and rearranging elements that are currently out of order. Instead, the XDocument class would be your best bet.
Since you only give a fragment of your XML, it's unclear whether your elements Order and orderdate belong in the default namespace of some parent element. If they do not belong in any namespace, you can use XDocument.Descendants(XName) and LINQ to XML as follows, taking advantage of the implicit conversion of string to XName:
var items = xdocument.Descendants("Order")
.OrderBy(o => (DateTime?)o.Element("orderdate"))
.ToList();
If the elements belong in a namespace specified on the root XML element, you need specify that namespace in your query using XNamespace, from which you can construct a full XName for Order to use in your Descendants query:
XNamespace ns = xdocument.Root.Name.Namespace;
var items = xdocument.Descendants(ns + "Order")
.OrderBy(o => (DateTime?)o.Element(ns + "orderdate"))
.ToList();
Or if the namespace is specified by some intermediate element rather than the root element, it may be easiest to specify the namespace as a string literal:
XNamespace ns = "http://MiddleNamespace";
var items = xdocument.Descendants(ns + "Order")
.OrderBy(o => (DateTime?)o.Element(ns + "orderdate"))
.ToList();
Working fiddle.
XmlTextReaderRepresents a reader that provides fast, non-cached, forward-only access to XML data. So basically no, it doesn't do sorting, andXDocumentis probably your best bet; if you explain your problem in more detail we might be able to give an alternative suggestion. By the way, this class is obsolete, useXmlReader.Create().