Подтвердить что ты не робот

NHibernate QueryOver с MaxResult, Group By и Order By

Я пытаюсь преобразовать SQL-запрос в синтаксис NHibernate QueryOver, но я не понимаю, как сортировать по проекции count.

Вот что выглядит 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

Любые идеи?

4b9b3361

Ответ 1

Вы можете просто повторить проекцию в предложении 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[]>();