在匿名对象中选择条件值的总和

时间:2016-10-13 08:45:07

标签: sql linq nhibernate

我有一个映射到nHibernate的发票表。

我需要根据匿名对象中的某些条件找出发票的各种计算值。

现在我正在使用不同的查询。

 var TotalAmount = session.QueryOver<Invoice>().Where(pred).Future()
                .Select(x => (x.InvoiceAmount.HasValue ? x.InvoiceAmount.Value : 0)).Sum();


 var financedAmount = session.QueryOver<Invoice>().Where(pred).Where(y => y.IsFinanced).Future()
                .Select(x => (x.InvoiceAmount.HasValue ? x.InvoiceAmount.Value : 0)).Sum();

在分析器中,这是向数据库发送多个查询,并且还提取整个表。我需要的东西类似于:

select (select sum(InvoiceAmount) from Invoice where IsFinanced = 1) as FinancedAmount,
(select sum(InvoiceAmount) from Invoice where IsFinanced = 0) as NonFinancedAmount; 

这样所有的值都可以在一个查询中返回。我如何编写nHibernate-Linq等价物呢?

0 个答案:

没有答案