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; 
Смежные вопросы