2012-04-12 49 views
2

我想选择一系列包含聚集表达式的值。因此,SQL可能是:使用nHibernate QueryOver选择含nhibernate查询的表达式

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

我看不到的地方(或者),这是支持的。看起来很奇怪,我可以将where子句写成表达式,但不将select中的列定义为表达式。

+2

HQL是你的朋友在这里!顺便说一句,你有一个零accpet率:) – Rippo 2012-04-12 15:32:05

+0

另一种方法是写一个有该计算和地图的视图 – Rippo 2012-04-13 05:56:11

回答

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组合。

希望有帮助

+0

太棒了!保存我转换整个查询。 – Sam 2012-04-17 06:33:53