LINQ-to-SQL OrderBy с DateTime не работает

2

У меня есть этот запрос 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
  • 0
    сначала вы можете использовать string.IsNullOrEmpty
  • 0
    это то же самое, что и использование "".
Теги:
linq-to-sql

2 ответа

7
Лучший ответ

Попробуйте оценить выражение без сортировки, а затем примените сортировку к результатам Distinct:

(Linq-To-Sql-Expression).Distinct().OrderByDescending(x => x.TIMECARDDATE).ToList()
  • 0
    Благодарю. Это сделал это.
  • 1
    ты можешь это объяснить?
Показать ещё 1 комментарий
1

Сначала вы можете использовать string.IsNullOrEmpty() вместо проверки, является ли строка нулевой или ""

Кроме того, это должно сработать. Вы, вероятно, переупорядочиваете его вне этого кода.

Обратите внимание, что это не выполняется до тех пор, пока вы его не выполните (вызов GetEnumerator()). Поэтому, если вы что-то изменили, прежде чем повторять его, это может быть причиной.

p.s. TIMECARDDATE - это объект или строка?

  • 0
    Это фактически выполняется, когда эта строка выполняется, потому что я использую .ToList (), который заставляет его быть оцененным в это время. TIMECARDDATE - это строка. (К сожалению)
  • 0
    Кроме того, string.IsNullOrEmpty не поддерживается в LINQ-To-SQL
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню