NHibernate,其中子查询等于/GreaterThan/LessThan

NHibernate,其中子查询等于/GreaterThan/LessThan,nhibernate,Nhibernate,我想知道如何根据NHibernate中子查询的值限制外部查询中的结果 sql将类似于: SELECT p.* FROM ParentTable p WHERE (SELECT COUNT(c.Id) FROM ChildTable c WHERE c.ParentId = p.Id) > n 我已经做到了: Parent parentAlias = null; Child childAlias = null; var query = Session.QueryOv

我想知道如何根据NHibernate中子查询的值限制外部查询中的结果

sql将类似于:

SELECT
    p.*
FROM
    ParentTable p
WHERE
    (SELECT COUNT(c.Id) FROM ChildTable c WHERE c.ParentId = p.Id) > n
我已经做到了:

Parent parentAlias = null;
Child childAlias = null;
var query = Session.QueryOver(() => parentAlias);
var subquery = Session.QueryOver(() => childAlias).Where(childAlias.Parent.Id == parentAlias.Id);
query.WithSubquery...

但似乎不能再进一步了——除非我遗漏了一些明显的东西?

我已经解决了。下面是一个伪示例:

Parent parentAlias = null;
var subquery = QueryOver.Of<Child>().Where(child.Parent.Id == parentAlias.Id);
var query = session.QueryOver(() => parentAlias)
    .WithSubquery.WhereExists(subquery)
    .List();
outerQuery.WithSubquery.WhereValue(int).Lt(subquery);
将像在SQL中一样执行

SELECT
  *
FROM
  OuterTable
WHERE 1 < (SELECT COUNT(*) FROM InnerTable WHERE ...)

嗨,菲罗-首先很抱歉延迟回复。第二,这很有帮助,但它不能完全回答我的问题。我需要根据子查询的行数限制外部查询中的结果。。