2009-08-05 8 views
1

Quel est le meilleur moyen de récupérer la liste des commandes ajoutées à un objet ICriteria à l'aide de la méthode AddOrder? Je crois que cela devra être accompli en utilisant Reflection, mais sur quoi réfléchir?Comment déterminer l'ordre de tri d'un objet ICriteria NHibernate?

Le but de cette opération est que je souhaite renvoyer l'ordre de tri à l'interface utilisateur afin qu'une indication de l'ordre de tri puisse être fournie à l'utilisateur.

+0

mmm .. puisque vous ajoutez les commandes en utilisant AddOrder, vous savez sûrement quelles commandes ont été ajoutées. Pourquoi ne pas retourner un objet contenant une liste de champs (qui ont été ajoutés dans la requête) ou autre? – sirrocco

+0

@sirrocco - malheureusement, les ordres sont ajoutés dans différentes méthodes à des moments différents, donc je devrais passer cette liste de champs à travers un certain nombre de méthodes ... certainement pas hors de question, mais pas tout à fait ce que j'espérais –

Répondre

2
var impl = session.CreateCriteria<User>().AddOrder(Order.Asc("Id")) as CriteriaImpl; 

foreach (CriteriaImpl.OrderEntry entry in impl.IterateOrderings()) 
{ 
Order order = entry.Order; 
    // now you have the order and you can either parse it : "propertyName asc" 
                 or "propertyName desc" 
    // or you can check it out in debug, it has a few protected fields that you could reflect. 
    // not sure if there's another way. 
} 
+0

Salut m8, exactement ce que je cherchais! –

+0

Contente que je puisse aider :) – sirrocco

+0

Excellent, j'avais aussi besoin de cette info, et je ne l'ai trouvée que sur Stack Overflow, merci sirrocco – CubanX

Questions connexes