帮助NHibernate Criteria查询groupby属性

dev*_*per 2 nhibernate criteria nhibernate-projections

我有以下查询,

SearchTemplate Template = new SearchTemplate();
            Template.Criteria = DetachedCriteria.For(typeof(table1));

            Template.Criteria.CreateCriteria("table2", "Usr", NHibernate.SqlCommand.JoinType.InnerJoin)

                 .SetProjection(Projections.ProjectionList()
                 .Add(Projections.Count("Usr.ID"), "UserCount")
                  .Add(Projections.GroupProperty("Location"), "ALocation")
                  .Add(Projections.GroupProperty("Company"), "ACompany")
                  .Add(Projections.GroupProperty("Usr.Designation"), "ADesignation"));  
Run Code Online (Sandbox Code Playgroud)

上面的查询给我数据,

Location   Company    Designation   Count
  Florida      A          Manager       3
  Florida      A          QA            5
  Texas        B          Manager       6
  Texas        B          QA            7
Run Code Online (Sandbox Code Playgroud)

有没有办法更改查询,以便它提供数据,

  Location   Company    Manager    QA               
  Florida      A           3       5
  Texas        B           6       7
Run Code Online (Sandbox Code Playgroud)

这里Manager和QA是唯一可以进入指定字段的值.

Die*_*hon 6

代替

.Add(Projections.Count("Usr.ID"), "UserCount")
.Add(Projections.GroupProperty("Usr.Designation"), "ADesignation")
Run Code Online (Sandbox Code Playgroud)

您需要两个投影,每个结果列一个:

.Add(Projections.Sum(Projections.Conditional(
                                 Restrictions.Eq("Usr.Designation", "Manager"),
                                 Projections.Constant(1),
                                 Projections.Constant(0)))
.Add(Projections.Sum(Projections.Conditional(
                                 Restrictions.Eq("Usr.Designation", "QA"),
                                 Projections.Constant(1),
                                 Projections.Constant(0)))
Run Code Online (Sandbox Code Playgroud)

  • 我知道之前先鞠躬+1 (2认同)