这就是我想要使用 NHibernate QueryOver 完成的事情:
SELECT TOP 10 * from
(SELECT aColumn, min(WorkingDay) as d
FROM aTable
GROUP BY aColumn) as a
ORDER BY a.d asc
它基本上是一个带有 Order By 的 Group By。
我知道我可能需要这样的子查询:
var subquery = QueryOver<aTable>.Of(() => alias)
.Select(
Projections.ProjectionList()
.Add(Projections.Group<aTable>(p => p.aColumn).WithAlias(() => alias.aColumn))
.Add(Projections.Min(() => alias.WorkingDay).WithAlias(() => alias.WorkingDay))
);
但我不知道如何围绕它构建一个选择。
任何帮助将不胜感激,谢谢。
var min = Projections.Min<aTable>(p => p.WorkingDay);
var result = session.QueryOver<aTable>()
.Select(Projections.ProjectionList()
.Add(Projections.Group<aTable>(p => p.aColumn))
.Add(min))
.OrderBy(min).Asc
.List<object[]>();