Using Criteria you can do this:

ISQLFunction f = new SQLFunctionTemplate(NHibernateUtil.String, 
"SomeFunction(ProductName)");
 var products = session.CreateCriteria(typeof(Product))
.AddOrder
(
        Order.Asc
        (
                Projections.SqlFunction(f, NHibernateUtil.String)
        )
)
.List();


RP

On Sunday, August 25, 2013 11:48:53 PM UTC+1, Gunnar Liljas wrote:
>
> Well, you can't actually sort using a stored procedure, not even in 
> fullblown TSQL, but you can use a UDF. There are a couple of ways (quite 
> intricate) to get that included in a query, so if it's OK with you I'd 
> recommend adding the ordering value as a property on CartItem, set it as a 
> Formula (with the UDF as the definition) and Lazy. That way, you should be 
> able to order by it.
>
> /G
>
>
> 2013/8/25 Gleb Chermennov <[email protected] <javascript:>>
>
>> I know this sound like a question from a newcomer - and that's probably 
>> because it is.
>> Is there any way to use a sql function in an orderby clause in 
>> NHibernate? Let's say I want to order a query result set by result of some 
>> built-in SQL function or my stored procedure? Something like following:
>> var items = session.QueryOver<CartItem>(c => c.Price > 200).OrderBy("exec 
>> dbo.MyCustomLogic").ToList();
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "nhusers" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> Visit this group at http://groups.google.com/group/nhusers.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to