2009-10-24 2 views
30

У меня есть список, что мне нужно сортировать DateTime, класс MyStuff выглядит следующим образом:как отсортировать коллекцию по DateTime в C#

public class MyStuff 
{ 
    public int Type {get;set;} 
    public int Key {get;set;} 
    public DateTime Created {get;set;} 
} 

Мне нужно, чтобы иметь возможность сортировать список коллекции по Созданное (DateTime).

+0

для того, чтобы правильно форматировать и выделить участки кода, вам нужно выделить строки в редакторе и нажмите на кнопку «код» (010 101) на панели инструментов редактора или нажмите Ctrl-K на клавиатуре –

ответ

6
var query = 
    from m in mystuffcollection 
    orderby m.Created ascending 
    select m; 
64

Вы, кажется, работает с List<T> объекта, в этом случае наиболее эффективным (и простой) метод будет следующим:

myList.Sort((x, y) => DateTime.Compare(x.Created, y.Created)); 

Это использует перегрузку List.Sort метод, чем принимает делегат Comparison<T> (и, следовательно, лямбда-выражение).

Вы можете, конечно, использовать метод расширения LINQ OrderBy, но я не думаю, что это дает какие-либо преимущества и может быть значительно медленнее, в зависимости от вашей ситуации.

myList = myList.OrderBy(x => x.Created).ToList(); 
+0

Я бы не стал беспокоиться о «исполнении» здесь. Хотя реквизиты для указания отсутствия LINQ/sort-by не нужны. – 2009-10-24 19:47:31

+11

Ключевое различие между этими двумя методами заключается в том, что 'List .Sort' сортирует существующий список, а' OrderBy' возвращает новый 'IEnumerable ' и оставляет список в отдельности. Это либо преимущество, если вы хотите сохранить исходный список или получить удар, если вы этого не сделаете. – stevemegson

+0

@stevemegson: Это очень верно. Однако типичные виды на месте обычно более распространены. – Noldorin

Смежные вопросы