Aiuto con la proprietà di GroupBy Criteri Criteria Nhibernate
-
28-10-2019 - |
Domanda
Ho la query di seguito,
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 query sopra mi dà dati come,
Location Company Designation Count
Florida A Manager 3
Florida A QA 5
Texas B Manager 6
Texas B QA 7
C'è un modo per cambiare la query in modo che fornisca dati come,
Location Company Manager QA
Florida A 3 5
Texas B 6 7
Qui Manager e Qa sono gli unici valori possibili che possono entrare nel campo della designazione ..
Soluzione
Invece di
.Add(Projections.Count("Usr.ID"), "UserCount")
.Add(Projections.GroupProperty("Usr.Designation"), "ADesignation")
Avrai bisogno di due proiezioni, una colonna per risultato:
.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)))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow