2017-08-25 2 views
-1

ich ein IEnumerable für mehrere Sortierreihenfolge Spezifikation, wo:Linq SortiertNach gegeben mehrere Spalten, Prioritätsreihenfolge und Sortierrichtung

public class Specification 
{ 
    public string Column { get; set; } 
    public OrderByDirection Direction { get; set; } 
    public int Priority { get; set; } 
} 

Dann habe ich eine andere IQueryable, Ich mag würde den gegebenen zu faul Art auf der Grundlage von IEnumerable unter Berücksichtigung der Richtung und der Priorität. Was wäre der beste Ansatz dafür? Gibt es Bibliotheken, die das derzeit tun? Kann jemand erklären, wie man mit dynamischen Abfragen (Ausdrucksbäumen) so etwas erreichen kann?

Hinweis: Angenommen, die angegebene Spalte existiert in der IQueryable.

Antwort

0

mit Linq; Ich würde Listen von basierend auf ihrer Priorität erstellen und dann foreach Prioritätsliste sortieren sie die Art, wie Sie später alle zu einer Liste hinzufügen möchten

Liste l = [ArrayObject/List] .OrderBy (o => o.Priority == (int) p);

  • Verwenden Sie struct's anstelle von Klassen und verwenden Sie nicht get; einstellen; Dies verbessert die Leistung erheblich, wenn Sie es nicht benötigen.