2013-08-06 5 views
9

У меня есть список datetime, и я хотел бы отсортировать его с помощью выражения лямбда, если это возможно.Sort DateTime List by Time

Мой список:

6/19/1979 8:00:00 AM 
5/5/1980 7:00:00 PM 
10/20/1982 5:00:00 PM 
1/4/1984 6:00:00 AM 

Выход должен быть в таком порядке:

1/4/1984 6:00:00 AM 
6/19/1979 8:00:00 AM 
10/20/1982 5:00:00 PM 
5/5/1980 7:00:00 PM 
+0

Для будущего поста, пожалуйста, старайтесь избегать тегов в заголовке и всех видов «спасибо вам». Не стесняйтесь обсуждать [meta] (http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts) –

+0

Странно, что даты, используемые в этот вопрос идентичен тем, которые приведены на этой странице: http://www.dotnetperls.com/sort-datetime –

ответ

30

Просто OrderByTimeOfDay:

var list = dateList.OrderBy(x => x.TimeOfDay).ToList(); 
// ToList added in response to comment. 
+1

Хотя мое решение действительно работает, это лучше. –

+0

+1 красивый и элегантный. Вы так близки к 10K :) –

+1

Когда я использую ваш метод, я получаю эту ошибку: «Невозможно неявно преобразовать тип« System.Linq.IOrderedEnumerable »в« System.Collections.Generic.List '. Явное преобразование существует (вы пропускаете листинг?) «CODE: Time is List : Times = Times.OrderBy (x => x.TimeOfDay); – user2138160

3

Выше будет работать только тогда, когда аль л даты такая же, в случае, если дата также различна, вы должны сделать следующее ...

var sortedDates = dates.OrderByDescending(x => x); 

или еще не хотят использовать, или не знает, Linq, то вы можете пойти на следующее. .

static List SortAscending(List list) 
{ 
list.Sort((a, b) => a.CompareTo(b)); 
return list; 
} 

static List SortDescending(List list) 
{ 
list.Sort((a, b) => b.CompareTo(a)); 
return list; 
} 
+0

Обратите внимание, что данные выборок, отправленные OP игнорируются, датируются в пользу времени. –

+2

это решение linq на самом деле единственное, что работает для меня. Другие не сортируются хорошо. Datetime я добавил .last() для получения старейшего обновления, и он хорошо работает, когда другие нет. – Zwan

0

использовать это решение

list<DateTime> YourList=new list<DateTime>(); 
. 
. 
. 
YourList.OrderByDescending(x=>x.Date).ThenByDescending(x=>x.TimeOfDay).ToList() 
0

list.Sort((a, b) => a.CompareTo(b)); Где список вы Перечислите переменную.