zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    快速排序
    冒泡排序算法
    设计模式之工厂方法模式
    调用存储过程修改
    取出字符串中的回车空格
    调用存储过程实例
    C++左值
    cocos2d-x 不规则形状按钮的点击判定
    C/C++
    字符函数库 cctype
  • 原文地址:https://www.cnblogs.com/TivonStone/p/2425081.html
Copyright © 2011-2022 走看看