NHibernate QueryOver与MaxResult,Group By和Order By

Joh*_*erg 16 nhibernate queryover

我正在尝试将SQL查询转换为NHibernate QueryOver语法,但我不明白如何按计数投影进行排序.

这就是SQL Query的样子:

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
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Flo*_*Lim 21

您可以简单地重复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[]>();
Run Code Online (Sandbox Code Playgroud)