2016-06-29 53 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;