我有一个通过代码获取的记录列表:
var list= NhSession.QueryOver<Data.Models.MembModel>()
.Where(w => w.Comp.Id == idcomp)
.JoinQueryOver(jq => jq.Ver)
.Select(s => s.Ver)
.List<Dados.Models.VerModel>();
使用此代码,我得到一个与MembModel中有关系的VerModel列表。问题是我得到的MeMModal中没有关联的VerModel列表,我想要描述一下,我想选择一个列表是&#34; notin&#34;第一个清单。我怎么能这样做?
Tks
答案 0 :(得分:0)
正如您所说,我们需要的是NOT IN(子查询)语句。 NHibernate确实有一个明确的方法来实现这一目标。首先是子查询,它将返回MembModel
集合(过滤或不过滤 - 根据需要),由VerModel.ID
var subquery = QueryOver.Of<Data.Models.MembModel>()
// we can still filter this sub-select ... or not
// .Where(w => w.Comp.Id == idcomp)
// what we need to be returned is the reference id, the VerModel.ID
.Select(m => m.Ver.ID);
现在我们将使用NOT IN(子查询)子句查询VerModel本身:
var list = session.QueryOver<Dados.Models.VerModel>()
.WithSubquery
.WhereProperty(v => v.ID) // the ID to match the prev selected one
.NotIn(subquery) // should NOT be IN
.List<Dados.Models.VerModel>();
检查: