NHibernate,hql:groupby,orderby,sum()

在nh的查询中有这样的需求,不仅需要对象,而且需要这个对象的其他附加属性。

比如:

场景:浙江省的景区投票评选

需求:选出投票数最多的10个景区

这样就需要景区对象和sum(票数)

/// <summary>
/// 获?得?地?区?景°区?投?票±排?行D
/// </summary>
/// <param name="area_code">地?区?编à码?</param>
/// <param name="scenic_name">景°区?名?称?</param>
/// <returns></returns>
public IList<Model.VoteRank> GetScenicsByVote(string area_code, string scenic_name)
{
    area_code = area_code.Substring(0, 2) + "__00";
    string strQuery = "select v.Scenic.Name,sum(v.Num) from Vote v where ";
    if (!string.IsNullOrWhiteSpace(area_code))
    {
        strQuery += " v.Scenic.Area.Code like '" + area_code+"'";
        if (!string.IsNullOrWhiteSpace(scenic_name))
        {
            strQuery += " and v.Scenic.Name='" + scenic_name + "'";
        }
    }
    else if(!string.IsNullOrWhiteSpace(scenic_name))
    {
        strQuery += " v.Scenic.Name='" + scenic_name + "'";
    }
    strQuery += " group by v.Scenic.Name order by sum(v.Num) desc";
    var query = session.CreateQuery(strQuery).List<object[]>();
    IList<Model.VoteRank> result=new List<Model.VoteRank>();
    foreach (var item in query)
    {
        result.Add(new Model.VoteRank() {
            ScenicName = item[0].ToString(),
            Num = int.Parse(item[1].ToString())
        });
    }
    return result;
}

 

 

参考


http://stackoverflow.com/questions/692975/nhibernate-group-by-and-count?answertab=votes#tab-top

转载于:https://www.cnblogs.com/TivonStone/archive/2012/03/30/2425081.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值