在Linq Nhibernate中选择具有组后最大值的行

时间:2015-09-09 13:57:37

标签: c# nhibernate linq-to-nhibernate

我有一张桌子:

Table { Id, Date, Number, Bool }

我需要按Number对其进行分组,选择每个组中包含max Date的行,并为每个组检索Id。最后,我需要将其过滤为仅包含!Bool的记录。我想用Linq Nhibernate做这件事。

这个SQL似乎正在做我想要的事情:

select Id from 
(select MAX(Date) as Dt, Number as N from Table group by Number) t, Table table
where table.Date = t.Dt and table.Number = t.N and table.Bool = 0

但事实证明,NHibernate不允许子查询在from中。我如何用Linq Nhibernate写这个? 它也非常重要,因为它有效,所以我宁愿避免在select或其中的子查询,如果它们迭代整个集和(N + 1)查询问题。

直截了当的方法也不起作用:

Session.Query<Table>().GroupBy(x => x.Number)
            .Select(x => x.Where(y => y.Date == x.Max(z => z.Date)))...

0 个答案:

没有答案