Как я могу выразить присоединение к сгруппированному подзапросу с помощью NHibernate?

Я пытаюсь выразить SQL-запрос, используя API критериев NHibernate, и у меня возникают трудности, потому что я мыслю ориентированным на базу данных, а NHibernate - объектно-ориентированным. .

SQL (отлично работает):

select outerT.id, outerT.col1, outerT.col2, outerT.col3
from tbl outerT
inner join
    (select max(innerT.id)
     from tbl innerT
     group by innerT.col1) grpT
on outerT.id = grpT.id

По сути, это самосоединение таблицы с ее подмножеством. Полагаю, я мог бы попытаться превратить самосоединение в ограничение:

select outerT.id, outerT.col1, outerT.col2, outerT.col3
from tbl outerT
where outerT.id in (select max(innerT.id) from tbl innerT group by innerT.col1)

Но я тоже не уверен, как выразить это с помощью NHibernate; Я борюсь с ProjectionList DetachedCriteria и хочу выбрать только max (id) при группировке по col1 .

Большое спасибо за ваши предложения!

6
задан David Rubin 8 November 2010 в 22:22
поделиться