Подтвердить что ты не робот

Linq to sql: порядок по дате времени desc, затем упорядочить по времени часть данных asc?

Это быстрый.

В Linq to sql мне нужно заказывать по дате времени по убыванию, а затем упорядочить по времени часть того же самого datetime, зарегистрированного по возрастанию, иметь смысл? Вот пример нужного результата:

[Серийный] [Дата (mm-dd-yyyy: hh-MM-ss)]
1 3-13-2008: 10-10-02
2 3-13-2008: 10-12-60
3 3-12-2008: 12-05-55


Я пробовал:

return query.OrderByDescending(c=> c.Time).ThenBy(c=> c.Time.TimeOfDay);


А также попробовал:

query.OrderByDescending(c => c.Time).ThenBy(c => c.Time.Hour).ThenBy(c=> c.Time.Minute).ThenBy(c=> c.Time.Second);


но никогда не работал. Любые предложения?

4b9b3361

Ответ 1

Используйте свойства Date и TimeOfDay для сортировки.

return query
   .OrderByDescending(c=> c.Time.Date)
   .ThenBy(c=> c.Time.TimeOfDay);

Ответ 2

Проблема заключается в том, что "Время" содержит информацию о дате и времени, таким образом, уже полностью сортируется. Вам нужно будет сначала выполнить сортировку даты.

return query.OrderByDescending(c=> c.Time.Date).ThenBy(c=> c.Time.TimeOfDay);

Не тестировалось:)

Ответ 3

Я думаю, что first orderByDescending сортирует все по дате (дата + время), поэтому следующие orderbys вступят в силу только в том случае, если у вас есть записи с одинаковой меткой времени.

Попробуйте это

query.OrderByDescending(c=> c.Time.Date).ThenBy(c=> c.Time.TimeOfDay)

Ответ 4

Поверните его, чтобы тики тоже будут работать:

return query.OrderByDescending(c=> c.Time.Ticks)