Список заказов по дате и времени (в строковом формате) - PullRequest
6 голосов
/ 09 февраля 2011

Вероятно, то, что я спрашиваю, довольно просто, но, похоже, я этого не понимаю. У меня есть список элементов, содержащих поле даты и время. Поле Date является обычным DateTime, а поле Time - строкой. Время форматируется как ЧЧ: мм и колеблется в 24 ч.

Упорядочить мой список по дате очень просто, выполнив List.OrderBy (e => e.Date), но я не могу позже упорядочить его по времени, чтобы порядок записей соответствовал дате и время.

Я попробовал это, но это, вероятно, большая ошибка!

    List = List.OrderBy(e => e.EstimatedDate).OrderBy(e => new TimeSpan(int.Parse(e.EstimatedTime.Substring(0,e.EstimatedTime.LastIndexOf(":"))),int.Parse(e.EstimatedTime.Substring(e.EstimatedTime.LastIndexOf(":")+1)),0).TotalMinutes);

Я надеюсь, что кто-то может помочь мне с этим.

Ответы [ 3 ]

12 голосов
/ 09 февраля 2011

Вы хотите OrderBy(...).ThenBy(...);, а также - не то, что если время в HH:mm , вам не нужно его анализировать - вы можете просто отсортировать его по алфавиту, т.е.

List = List.OrderBy(e => e.EstimatedDate).ThenBy(e => e.EstimatedTime).ToList();

или через LINQ:

List = (from e in List
        orderby e.EstimatedDate, e.EstimatedTime
        select e).ToList();
4 голосов
/ 09 февраля 2011

почему бы не попробовать что-то вроде следующего:

List.OrderBy(e => e.Date).ThenBy(e => DateTime.Parse(e.Time));
// May need to change DateTime.Parse(e.Time) with appropriate conversion code
2 голосов
/ 09 февраля 2011

Вы знаете ThenBy ()?

List = List.OrderBy(DATE).ThenBy(Time)
...