2009-08-20 22 views
2

私は逆の順序でメッセージのリストを表示するこの関数を持っています。日付でリストを逆順に並べ替えるLambdaクエリ

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()を呼び出すだけですか?

答えて

6

ではなく、OrderByDescendingの拡張方法を使用します。

2つではなく1つのコレクションの繰り返しが必要なので、これはもっと効率的な方法です。

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

使用OrderByDescending

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

実際には、あなたが全部簡素化することができます。

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

おかげで、答えのために。あなたはどちらも正しいですが、Noldorinが最初です。 ありがとうございますが、中間コレクションを使用した理由は、データソースがICollectionを実装する必要があり、AllowPagingがtrueの場合はデータソースページングを実行する必要があるというエラーが表示されたためです。 – NetHawk

+0

@NetHawk:最後にToList()を呼び出すのが最も簡単です。 :) – Noldorin

+0

ToList()呼び出しを含むように更新されました。 IEnumerableに直接バインドできるかどうかはわかりませんでした。私たちは今知っていると思います。 – tvanfosson

関連する問題