如何使用nHibernate在没有子查询的情况下根据条件进行投影

如何使用nHibernate在没有子查询的情况下根据条件进行投影,nhibernate,if-statement,subquery,queryover,Nhibernate,If Statement,Subquery,Queryover,在我的问题中,一个人可以有几个职位 人员->作业[IdJob] 需要为某一领域的经理职位做一个投影,为其他领域的经理职位做另一个投影 不使用子查询。能做到吗 例如: .SelectList Sl=>Sl 。选择组S=>S。Name.WithAlias​​ => 雷尔。个人 其中=>Person.idJob=1 /*functionalaia好像,在这里我可以设计一个董事会成员到管理员类字段*/ 。选择组S=>S。Name.WithAlias​​ => 雷尔。管理员 其中=>Person.idJo

在我的问题中,一个人可以有几个职位

人员->作业[IdJob]

需要为某一领域的经理职位做一个投影,为其他领域的经理职位做另一个投影

不使用子查询。能做到吗

例如:

.SelectList Sl=>Sl 。选择组S=>S。Name.WithAlias​​ => 雷尔。个人 其中=>Person.idJob=1

/*functionalaia好像,在这里我可以设计一个董事会成员到管理员类字段*/

。选择组S=>S。Name.WithAlias​​ => 雷尔。管理员

其中=>Person.idJob=2

/*同一客户的经理*/

。选择组S=>S。Name.WithAlias​​ => 雷尔。管理者


谢谢菲罗!属性“无”中出错->上下文中不存在名称“无”。不需要上下文,但无论如何,我需要两个条件来验证这个人是否有活动的工作。这种情况需要子查询,对吗?none是在查询上方定义的局部变量。怎么会不知道呢?若您的作业是一个实体,并且需要对其进行限制,那个么您需要一个子查询,该子查询可以通过子查询类访问
var personName = Projections.Property<Person>(p => p.Name);
var none = Projections.Constant(null);
session.QueryOver<Person>()
    .Select(
        Projections.Conditional(Expression.Where<Person>(p => p.Job == Job.Manager), personName, none).WithAlias(() => rel.Manager),
        Projections.Conditional(Expression.Where<Person>(p => p.Job == Job.Administrator), personName, none).WithAlias(() => rel.Administrator),
        Projections.Conditional(Expression.Where<Person>(p => p.Job == Job.Employee), personName, none).WithAlias(() => rel.Individual)
        );