Ich versuche eine Abfrage zu schreiben, die ein Kriterium annimmt und eine Zählprojektion zurückgibt. Das ist derzeit, was ich benutze, aber es ist wirklich ineffizient. Haben Sie Ideen, wie ich das ersetzen kann?
/// Jedes Kriterium trägt eine Zeile bei
private IProjection AsCount( ICriterion kriterium )
{
if (kriterium == null) {
return Projections.RowCount();
} else {
return Projections.Sum( Projections.Conditional( kriterium,
Projections.Cast( NHibernateUtil.Int32, Projections.Constant( 1 ) ),
Projections.Cast( NHibernateUtil.Int32, Projections.Constant( 0 ) ) ) );
}
}
Nur damit Sie wissen, was ich hier tatsächlich versuche zu tun, habe ich eine Reihe von Kriterienausdrücken und ich muss eine gruppierte Tabelle generieren, in der die Spalten die Ausdrücke sind.