Лямбда-запрос для обратного упорядочения списка по дате - PullRequest
2 голосов
/ 20 августа 2009

У меня есть эта функция, которая показывает список сообщений в обратном порядке.

 protected void setupMessages(IList<Message> Messages)
 {
     List<Message> messages = new List<Message>() ;
     messages.AddRange( Messages.OrderBy(message => message.DateAdded).Reverse());
     MessagesRepeater.DataSource = messages;
     MessagesRepeater.DataBind();
 }

Мне было интересно, есть ли способ изменить порядок в лямбда-запросе, не вызывая метод Reverse? Или вызов Reverse () единственный способ сделать это?

Ответы [ 2 ]

6 голосов
/ 20 августа 2009

Вы просто хотите использовать метод расширения OrderByDescending, в отличие от OrderBy.

Действительно, это был бы более эффективный метод, поскольку он требует только одну итерацию набора, а не две.

messages.AddRange(Messages.OrderByDescending(message => message.DateAdded));
3 голосов
/ 20 августа 2009

Использование OrderByDescending

messages.AddRange( Messages.OrderByDescending( message => message.DateAdded ) );

На самом деле, вы можете упростить все это:

protected void setupMessages(IList<Message> Messages)
{     
     MessagesRepeater.DataSource = Messages.OrderByDescending( message => message.DateAdded )
                                           .ToList();
     MessagesRepeater.DataBind();
}
...