Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.42 KB | None | 0 0
  1.  
  2.         public static Dictionary<object, object> AggregateGroupByRange(this QueryExecutor executor, Query query, ISessionHolder sessionHolder, string propertyName,
  3.             AggregateType aggregateType)
  4.         {
  5.             var session = executor.GetSession(sessionHolder);
  6.             if (session == null)
  7.                 return null;
  8.             if (query == null)
  9.                 return null;
  10.  
  11.             var tempOrders = query.Orders;
  12.             query.Orders = null;
  13.  
  14.             var criteria = executor.GetCriteria(session, query);
  15.  
  16.             var range = new []{0, 25, 50, 70};
  17.  
  18.             //not working
  19.             var result1 = criteria.SetProjection(
  20.                 Projections.ProjectionList()
  21.                     .Add(Projections.GroupProperty(
  22.                             Projections.Conditional(
  23.                                Restrictions.Between(propertyName, "0", "50"),
  24.                                Projections.Constant("0-50"),
  25.                                Projections.Constant("Other"))), "Range")
  26.                     .Add(GetProjection(AggregateType.Count)(propertyName))
  27.                     )
  28.                .List();
  29.  
  30.             //working
  31.             var result = criteria
  32.                 .SetProjection(
  33.                   Projections.ProjectionList()
  34.                      .Add(
  35.                         Projections.GroupProperty(
  36.                            Projections.SqlProjection(
  37.                               @"case
  38.                                    when CUES_TOTAL_SCORE between 0 and 50 then '0-50'
  39.                                    else 'Other'
  40.                                 end as Range",
  41.                               new[] { "Range" },
  42.                               new[] { NHibernateUtil.GetSerializable(typeof(double)) })))
  43.                      .Add(GetProjection(AggregateType.Count)(propertyName))
  44.                      )
  45.                .List();
  46.  
  47.             query.Orders = tempOrders;
  48.  
  49.             return null;
  50.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement