2009-08-20 5 views
2

Ich habe diese Funktion, die eine Liste von Nachrichten in umgekehrter Reihenfolge zeigt.Lambda Abfrage um eine Liste nach Datum umzukehren

Ich frage mich, ob es eine Möglichkeit gab, die Reihenfolge innerhalb der Lambda-Abfrage umzukehren, ohne die Reverse-Methode aufzurufen? Oder ruft Reverse() die einzige Möglichkeit auf?

Antwort

6

Sie möchten einfach die Erweiterungsmethode OrderByDescending verwenden, im Gegensatz zu OrderBy.

der Tat wäre dies eine effizientere Methode sein, da es nur eine Iteration der Sammlung erfordert statt zwei.

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

Verwenden OrderByDescending

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

In der Tat kann man das Ganze vereinfachen:

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

Danke für die Antwort. Sie haben beide recht, aber Noldorin war der Erste. Danke für den Code, aber der Grund, warum ich die Zwischensammlung verwendet habe, war, weil ich eine Fehlermeldung erhalten habe, dass meine Datenquelle ICollection implementieren oder Datenquellenauslagerung durchführen muss, wenn AllowPaging wahr ist. – NetHawk

+0

@ NetHawk: Am einfachsten, um 'ToList()' am Ende zu nennen, in diesem Fall. :) – Noldorin

+0

Aktualisiert, um den Aufruf von ToList() einzuschließen. Ich war mir nicht sicher, ob Sie direkt an IEnumerable binden können oder nicht. Ich denke jetzt wissen wir es. – tvanfosson

Verwandte Themen