在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
作者:石世特
出处:http://www.cnblogs.com/TivonStone/
希望本文对你有所帮助,想转随便转,心情好的话给我的文章留个链接.o(. .)o