2012-03-29 55 views
0

我在nhibernate中使用了加入打击码,工作正常。但是我不想在加入之前在两个查询上使用.List,我想在加入后使用.List。我不知道nhibernate太多..请给我提供帮助,我应该在下面的功能中进行修改,以便首先加入数据,然后在其上应用.List加入到nhibernate中

public IEnumerable<PGrp> GetSol() 
    { 
     _pGrpR = null; 
     _pGrp = null; 

     QueryOver<Phy, Phy> activePhyQuery = GetDataQuery(); 

     var phyGrpR = _session.QueryOver(() => _pGrpR) 
     .Where(
      Subqueries.WhereProperty<PGrpR>(p => _pGrpR.PhyId).In(
       activePhyQuery)) 
     .List<PGrpR>(); 

     IList<PGrp> pGrps = _session.QueryOver(() => _pGrp) 
      .Where(x => !x.AC) 
      .List<PGrp>(); 

     var newPGrps = pGrps 
      .Join(
       pGrpR, 
       p => p.Id, 
       x => x.PGrpId, 
       (p, x) => p 
      ).Distinct().OrderBy(x => x.Name); 

     return newPGrps; 
    } 

由于

回答

0
PGrpR pGrpR = null; 
IList<PGrp> pGrps = _session.QueryOver(() => _pGrp) 
      .Where(x => !x.AC) 
      .JoinAlias(pgrps => pgrps.pGrpR,() => pGrpR) // Set real property name 
      .OrderBy(() => pGrpR.Name).Asc 
      .Select(Projections.Distinct(Projections.Property(() => pGrpR."PropertyForDistinct"))) 
      .TransformUsing(Transformers.DistinctRootEntity) 
      .List<PGrp>(); 
+0

在.JoinAlias线面对错误 – 2012-03-29 10:25:47