我正在尝试将SQL查询转换为NHibernate QueryOver语法,但是我不了解如何按计数投影进行排序。
这是SQL查询的样子:
select top 10 v.intVoteUserID, COUNT(v.intVoteUserID)
from Group_MessageVotes v
where v.dtmVote > :date
group by v.intVoteUserID
order by COUNT(v.intVoteUserID) desc
有任何想法吗?
最佳答案
您可以简单地在OrderBy子句中重复投影。
以下查询将为您提供一个IList<object[]>
,其中每个项目的第一个元素是id,第二个元素是计数。
var result = session.QueryOver<GroupMessageVotes>()
.Select(
Projections.Group<GroupMessageVotes>(e => e.intVoteUserID),
Projections.Count<GroupMessageVotes>(e => e.intVoteUserID)
)
.OrderBy(Projections.Count<GroupMessageVotes>(e => e.intVoteUserID)).Desc
.Take(10)
.List<object[]>();
关于nhibernate - NHibernate QueryOver,具有MaxResult,Group By和Order By,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5708177/