使用NHibernate条件汇总多个属性/列 [英] Using NHibernate Criteria to sum across multiple properties/columns

查看:78
本文介绍了使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆