2016-06-29 3 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; 
: 여기 내가 사용하고 작업 예입니다