我有一个记录列表,我在代码中找到了这些记录:
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>();通过这段代码,我得到了一个VerModel列表,它在MembModel中有关系。问题是,我得到的是与VerModel无关的MembModal列表,我想要描述这一点,我想选择一个列表,即"notin“第一个列表。我该怎么做?
Tks
发布于 2014-04-02 04:52:20
正如您所说,我们需要的是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>();检查:
https://stackoverflow.com/questions/22792209
复制相似问题