2016-06-29 12 views
0

次のクエリを実行することができません。グループ化と合計は問題なく動作しますが、私は条件付きの合計を実行しようとするとき、私は、コンパイラで次のエラーが表示されます。NHibernateを使用した条件付き投影

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

関数のコードです:

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; 

すべて私が見た例では違いはありません。私は間違って何をしていますか?

答えて

0

条件部分にタイプすることなく、Projection.Sumを使用して解決:

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; 
:ここに は、私が使用している実施例であります
関連する問題