2009-08-05 4 views
1

Каков наилучший способ получить список заказов, добавленных в объект ICriteria, с помощью метода AddOrder? Я считаю, что это нужно будет сделать, используя Reflection, но о чем подумать?Как определить порядок сортировки объекта NHibernate ICriteria?

Целью этого является то, что я хотел бы передать заказ сортировки обратно в пользовательский интерфейс, поэтому пользователю может быть предоставлен указатель порядка сортировки.

+0

mmm .. так как вы добавляете Заказы, используя AddOrder, вы точно знаете, какие Заказы были добавлены. Почему бы не вернуть объект, содержащий список полей (которые были добавлены в запрос) или что-то еще? – sirrocco

+0

@sirrocco - к сожалению, заказы добавляются разными способами в разное время, поэтому мне пришлось бы пройти этот список полей до нескольких методов ... конечно, не исключено, но не совсем то, что я надеялся на –

ответ

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

Cheers m8, именно то, что я искал! –

+0

Рад я мог помочь :) – sirrocco

+0

Отлично, мне тоже нужна эта информация, и я нашел ее только на Stack Overflow, спасибо sirrocco – CubanX

Смежные вопросы