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

时间:2014-09-22 18:44:26

标签: nhibernate if-statement subquery queryover

在我的查询中,一个人可以有多个职位。

人 - >工作[IdJob]

需要为字段的经理位置进行投影,为其他字段的经理位置进行另一次投影

不使用子查询。可以吗?

例如:

  

.SelectList(Sl => sl   .SelectGroup(S => s.Name).WithAlias(()=> rel。个人)   Where(()=> Person.idJob = 1)

     

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

     

.SelectGroup(S => s.Name).WithAlias(()=> rel.Administrator)

     

其中(()=> Person.idJob = 2)

     

/ *相同的经理* /

     

.SelectGroup(S => s.Name).WithAlias(()=> rel.Managers)

1 个答案:

答案 0 :(得分:0)

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)
        );