Aide à la propriété groupby de critères NHibernate
-
28-10-2019 - |
Question
J'ai la requête ci-dessous,
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"));
La requête ci-dessus me donne données,
Location Company Designation Count
Florida A Manager 3
Florida A QA 5
Texas B Manager 6
Texas B QA 7
Est-il possible de changer la requête afin qu'il donne des données comme,
Location Company Manager QA
Florida A 3 5
Texas B 6 7
Ici Manager et QA sont les seules valeurs possibles qui peuvent aller dans le champ Désignation ..
La solution
Au lieu de
.Add(Projections.Count("Usr.ID"), "UserCount")
.Add(Projections.GroupProperty("Usr.Designation"), "ADesignation")
Vous aurez besoin de deux projections, l'une par colonne de résultat:
.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)))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow