Я приложил все усилия, чтобы преобразовать вашу структуру классов в запрос, который я выполняю в том же духе.Мой был после 1 родителя с критериями, у которых есть ребенок, где у самого нового ребенка были специальные критерии.Я удалил родительские критерии и применил вашу структуру классов, поэтому она должна быть близкой, но не проверенной.
var query = session.QueryOver<BlogPost>(); //get queryover however you implemented
BlogPost bp = null;
Comment c = null;
var q = QueryOver.Of<BlogPost>(() => bp)
.JoinAlias(() => bp.Comments, () => c)
.SelectList(list => list.SelectMax(() => c.DateAdd));
query.JoinQueryOver<Comment>(x => x.Comments)
.WithSubquery
.WhereProperty(x => x.DateAdd).Eq(q)
.Where(x => x.TypeId == 1 || x.TypeId == 2);
query.List...