¿Cómo puedo expresar unirme a una subconsulta agrupada usando NHibernate?

Estoy tratando de expresar una consulta SQL utilizando la API de Criterios de NHibernate, y me encuentro con dificultades porque estoy pensando en una forma centrada en la base de datos, mientras que NHibernate se centra en los objetos.

SQL (funciona muy bien):

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

Esencialmente, esta es una unión de una tabla contra un subconjunto de sí mismo. Supongo que podría intentar convertir la autounión en una restricción:

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)

Pero tampoco estoy seguro de cómo expresar eso usando NHibernate; Estoy luchando con la lista de proyección de DetachedCriteria y solo quiero seleccionarmax(id) mientras se agrupa porcol1.

¡Muchas gracias por tus sugerencias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta