如何使用Nhibernate进行条件求和?

我正在尝试相当于这个SQL代码

SELECT ID SUM(CASE WHEN myProperty = 2 THEN 1 ELSE 0 END) as nbRowWithValueOf2, SUM(CASE WHEN myProperty = 3 THEN 1 ELSE 0 END) as nbRowWithValueOf3 FROM Foo GROUP BY ID 

有了Nhibernate。

到目前为止我试过了

 queryable = queryable .Select( Projections.Group(c => c.ID), Projections.Sum(c => c.myProperty == MyEnum.Two ? 1 : 0) Projections.Sum(c => c.myProperty == MyEnum.Three ? 1 : 0) ) 

但这给了我以下错误:

无法从IIF确定成员((转换(c.myProperty)= 2),1,0)

你有什么主意吗 ?

编辑1:我可以通过2个查询获得结果但我只想在1个查询中执行此操作。

编辑2:我在这里使用QueryOver。

我认为这应该工作(QueryOver语法):

 queryover = queryover .Select( Projections.Group(c => c.ID), Projections.Sum( Projections.Conditional( Restrictions.Where(f => f.myProperty == MyEnum.Two), Projections.Constant(1), Projections.Constant(0))), Projections.Sum( Projections.Conditional( Restrictions.Where(f => f.myProperty == MyEnum.Three), Projections.Constant(1), Projections.Constant(0)))); 

哪个应该给你以下SQL:

 SELECT this_.ID as y0_, sum((case when this_.myProperty = 2 /* @p0 */ then 1 /* @p1 */ else 0 /* @p2 */ end)) as y1_, sum((case when this_.myProperty = 3 /* @p3 */ then 1 /* @p4 */ else 0 /* @p5 */ end)) as y2_ FROM [Foo] this_ GROUP BY this_.ID