使用NHibernate条件汇总多个属性/列 [英] Using NHibernate Criteria to sum across multiple properties/columns
本文介绍了使用NHibernate条件汇总多个属性/列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有人知道如何使用NHibernate条件表达以下SQL语句吗?
Does anyone know how to express the following SQL statement using NHibernate criteria?
SELECT SUM(Val1 + Val2) FROM SomeTable
看似简单,但是AFAIK我似乎找不到不返回数组的方法值,Val1 + Val2的总和分开,然后从数组求和,这是我要避免的。
Seems simple, but AFAIK I can't seem to find a way to do this without returning an array of values, the sums of Val1 + Val2 seperately and then summing from the array, which I want to avoid.
推荐答案
在注释中到@Jaguar在回答中提到的博客文章 NHibernate和缺少的OperatorProject 是一个替代解决方案:
In comments to blog post that @Jaguar has mentioned in his answer NHibernate and the missing OperatorProjection is an alternative solution:
session.CreateCriteria().SetProjection(
Projections.Property<SomeType>(val => val.Id),
Projections.Property<SomeType>(val => val.Duration),
Projections.SqlFunction(
new VarArgsSQLFunction("(", "+", ")"),
NHibernateUtil.Double,
Projections.Property<SomeType>(val => val.Duration),
Projections.Constant(1)
)
).List();
所有功劳归于柚子。
这看起来像是:
Projections.Sum(
Projections.SqlFunction(
new VarArgsSQLFunction("(", "+", ")"),
NHibernateUtil.Int32,
Projections.Property<SomeTableType>(val => val.Val1),
Projections.Property<SomeTableType>(val => val.Val2)
)
)
尤其是 VarArgsSQLFunction
很有用。
Especially VarArgsSQLFunction
is useful.
这篇关于使用NHibernate条件汇总多个属性/列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文