Мне пришлось внести пару изменений, чтобы пример кода компилировался и сортировался по желанию:
var formatter = new DateTimeFormatInfo
{
ShortDatePattern = "dd/MM/yyyy"
};
var items = from item in doc.Descendants("item")
orderby Convert.ToDateTime(item.Attribute("lastChanges").Value, formatter) descending
where item.Attribute("x").Value == "1"
select item;
Главное было предоставить IFormatProvider, чтобы система могла правильно анализировать даты.
Выход:
<item id="3" lastChanges="17-05-2010" x="1" />
<item id="2" lastChanges="16-05-2010" x="1" />
Если вы разделяете задачу фильтрации и упорядочения данных в тестируемый класс, вы должны быть в состоянии проверить правильность упорядочения и сосредоточить поиск проблем в другом месте.
public class DataSource
{
private readonly XDocument _doc;
public DataSource(XDocument doc)
{
_doc = doc;
}
public IEnumerable<XElement> GetSortedFilteredElements()
{
var formatter = new DateTimeFormatInfo
{
ShortDatePattern = "dd/MM/yyyy"
};
var items = from item in _doc.Descendants("item")
orderby Convert.ToDateTime(item.Attribute("lastChanges").Value, formatter) descending
where item.Attribute("x").Value == "1"
select item;
return items;
}
}
использование:
Repeater1.DataSource =
new DataSource(XDocument.Load(Server.MapPath("file.xml")))
.GetSortedFilteredElements();
Следующее, на что нужно обратить внимание, было бы, как подсказал @ david-b, будет ли Repeater переупорядочивать входы, потому что строковые значения XmlNode определенно будут выходить в другом порядке, если будут отсортированы как строки.