У меня есть этот запрос LINQ. Дата хранится в виде строки в базе данных, но мне нужно ее заказать. Поэтому я конвертирую его в DateTime, но он не упорядочивает.
(from m in dbDataContext.TimeCards
where m.TIMECARDDATE != ""
&& m.TIMECARDDATE != null
orderby Convert.ToDateTime(m.TIMECARDDATE) descending
select Convert.ToDateTime(m.TIMECARDDATE)).Distinct().ToList();
Любая идея, почему это не работает? Я не могу изменить базу данных, поэтому мне приходится иметь дело с данными так, как есть. Я получаю данные назад, как это...
2/27/2009
2/26/2009
2/25/2009
2/28/2009
2/24/2009
Попробуйте оценить выражение без сортировки, а затем примените сортировку к результатам Distinct:
(Linq-To-Sql-Expression).Distinct().OrderByDescending(x => x.TIMECARDDATE).ToList()
Сначала вы можете использовать string.IsNullOrEmpty()
вместо проверки, является ли строка нулевой или ""
Кроме того, это должно сработать. Вы, вероятно, переупорядочиваете его вне этого кода.
Обратите внимание, что это не выполняется до тех пор, пока вы его не выполните (вызов GetEnumerator()
).
Поэтому, если вы что-то изменили, прежде чем повторять его, это может быть причиной.
p.s. TIMECARDDATE - это объект или строка?