You can always get UnderlyingCriteria ...
var q = GetSession() .QueryOver(() => activity) .JoinAlias(() => activity.ActivityLicense, () => license) .Select(Projections.ProjectionList() .Add(Projections.Count<Activity>(e => e.Id), "ActivityCount") .Add(Projections.Group(() => license.SerialNumber), "SerialNumber") .Add(Projections.Count<Activity>(e => e.MacAdress), "MacAddressCount") .Add(Projections.Count<Activity>(e => e.IpAdress), "IpAddressCount") ); q.UnderlyingCriteria.AddOrder(new Order("ActivityCount", true)); var results = q.List();
or as an extension method for IQueryOver
public static IQueryOver<T,T> OrderByAlias(this IQueryOver<T,T> q, string aliasName, bool ascending) { q.UnderlyingCriteria.AddOrder(new Order(aliasName, ascending)); return q; }
source share