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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM