选择带有nhibernate查询的表达式

时间:2012-04-12 14:25:22

标签: nhibernate queryover

使用nHibernate QueryOver我想选择一系列包含聚合表达式的值。所以sql可能是:

SELECT SUM(Total / (TaxRate + 1)) Totals FROM Contract Group By CustomerId

我看不到支持的位置(或者是否支持)。看起来奇怪的是我可以将where子句写为表达式,但不能在select as表达式中定义列。

1 个答案:

答案 0 :(得分:1)

由于我没有你的代码,我无法验证这些,但你可以试试这个:

var dividePropertyProjection = Projections.SqlProjection(
                "SUM(Total/TaxRate+1) as Totals", new string[] {"Totals"}, new IType[] {NHibernateUtil.Decimal});  //Assuming the sum is decimal, you can change it



var list=   Session.QueryOver<Contract>().Select(Projections.Group<Contract>(x=>x.CustomerId),dividePropertyProjection).List(); 

不确定会返回哪个列表,我猜它应该返回CustomerId, Sum组合。

希望有所帮助