2012-04-12 6 views
2

mit nHibernate QueryOver Ich möchte eine Reihe von Werten auswählen, die einen Aggregatausdruck enthalten. So könnte der SQL:Wählen Sie einen Ausdruck mit nhibernate queryover

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

Ich kann nicht sehen, wo (oder wenn) dies unterstützt wird. Es scheint seltsam, dass ich where-Klauseln als Ausdrücke schreiben kann, aber keine Spalten in den select as-Ausdrücken definieren kann.

+2

HQL ist dein Freund hier! BTW Sie haben eine Null-Accepet-Rate :) – Rippo

+0

Eine andere Möglichkeit ist, eine Ansicht zu schreiben, die die Berechnungen und die Karte von diesem – Rippo

Antwort

1

Da ich Ihren Code nicht kippe ich irgendetwas davon überprüfen, aber Sie können versuchen, diese:

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(); 

nicht sicher, welche Liste zurückkehren, ich vermute, es CustomerId, Sum Kombination zurückkehren sollte.

Hoffe, dass hilft

+0

hat Das ist großartig! Speichert die Konvertierung der gesamten Abfrage. – Sam

Verwandte Themen