首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JoinQueryOver在QueryOver中选择notin列表

JoinQueryOver在QueryOver中选择notin列表
EN

Stack Overflow用户
提问于 2014-04-01 16:57:50
回答 1查看 167关注 0票数 0

我有一个记录列表,我在代码中找到了这些记录:

代码语言:javascript
复制
  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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-02 04:52:20

正如您所说,我们需要的是NOT IN (子查询)语句。NHibernate确实有一个明确的方法来实现这一点。首先,子查询将返回由MembModel表示的VerModel.ID集合(筛选或不筛选)。

代码语言:javascript
复制
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本身:

代码语言:javascript
复制
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>();

检查:

  • 16.8.子查询
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22792209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档