2017-07-21 2 views

Répondre

1

Il est difficile de répondre sans connaître vos entités, applications, la technologie utilisée (API ICreteria, QueryOver, Linq).

Mais je peux suggérer cette solution à l'aide QueryOver:

AppUser ownerAlias = null; 
WeeklyTask taskAlias = null; 
var result = Session.QueryOver(() => taskAlias) 
       .JoinAlias(x => x.TaskOwner, 
          () => ownerAlias, 
          NHibernate.SqlCommand.JoinType.RightOuterJoin, 
          Restrictions.Where(() => taskAlias.Status == 1)) 
       .SelectList(list => list 
        .SelectGroup(x => ownerAlias.Id) 
        .SelectCount(x => x.Id)) 
       .List<object[]>(); 

ou ceci:

var result = Session.QueryOver<WeeklyTask>() 
       .Where(x => x.Status == 1) 
       .Right.JoinQueryOver(x => x.TaskOwner) 
       .SelectList(list => list 
        .SelectGroup(x => x.TaskOwner.Id) 
        .SelectCount(x => x.Id)) 
       .List<object[]>(); 

S'il vous plaît noter que dans cette approche votre must entité WeeklyTask contient mappée référence à une entité AppUser.

+0

merci beaucoup, le premier QueryOver a parfaitement fonctionné –