2016-06-29 20 views
0

Ich bin nicht in der Lage, die folgende Abfrage zu funktionieren. Die Gruppierung und Gesamtsumme funktioniert ohne Problem, aber wenn ich versuche, die bedingte Summe zu tun, ich die folgende Fehlermeldung auf dem Compiler:Bedingte Projektion mit NHibernate

Error CS1503 Argument 1: cannot convert from 'NHibernate.Criterion.IProjection' to 'System.Linq.Expressions.Expression<System.Func<ManagementWebBase.Models.FinancialTransaction.FinancialTransactionTO, object>>' 

Der Code der Funktion ist:

var summary = session.QueryOver<FinancialTransactionTO>().Select(
      Projections.Group<FinancialTransactionTO>(t=>t.Company.Id), 
      Projections.Sum<FinancialTransactionTO>(t=>t.Total), 
      Projections.Sum<FinancialTransactionTO>(
      Projections.Conditional(
      Restrictions.Where<FinancialTransactionTO>(f => f.Type.Id == 1), 
      Projections.Constant(1), 
      Projections.Constant(0)))).List<object>(); 

     return summary; 

Alle Die Beispiele, die ich gesehen habe, haben keine Unterschiede. Was mache ich falsch?

Antwort

0

ohne die Art auf dem Bedingungsteil mit Projection.Sum Gelöst: Hier ist das Arbeitsbeispiel Ich verwende:

var summary = session.QueryOver<FinancialTransactionTO>().Select(
      Projections.Group<FinancialTransactionTO>(t => t.Company.Id), 
      Projections.Sum<FinancialTransactionTO>(t => t.Total), 
      Projections.Sum(
      Projections.Conditional(
      Restrictions.Where<FinancialTransactionTO>(f => f.Type.Id == 1), 
      Projections.Property<FinancialTransactionTO>(f=>f.Total), 
      Projections.Constant(0.0M, NHibernateUtil.Decimal)))).List<object>(); 

     return summary;