You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用NHibernate子查询按关联TelecoCompany名称过滤Concept分页数据

解决方案

你可以通过以下方式实现基于TelecoCompany名称筛选Concept的子查询逻辑:

在PaginatedAsync方法的TelecoCompanyId判断分支中,替换为以下代码:

if (StringUtils.HasText(uFilter.TelecoCompanyId))
{
    // 子查询:获取所有符合名称匹配条件的TelecoCompany的Id
    var telecoSubQuery = QueryOver.Of<TelecoCompany>()
        .WhereRestrictionOn(tc => tc.CompanyName)
        .IsInsensitiveLike(uFilter.TelecoCompanyId, MatchMode.Anywhere)
        .Select(tc => tc.Id); // 只选择Id字段用于子查询匹配

    // 主查询关联子查询,筛选TelecoCompany.Id在子查询结果中的Concept
    qo.Where(Subqueries.WhereProperty<Concept>(c => c.TelecoCompany.Id).In(telecoSubQuery));
}

代码说明:

  • 子查询构建:创建TelecoCompany的QueryOver,通过IsInsensitiveLike实现不区分大小写的模糊匹配,最后只选择Id字段,减少不必要的数据传输。
  • 主查询关联:使用Subqueries.WhereProperty让主查询的Concept.TelecoCompany.Id匹配子查询返回的Id集合,间接实现按关联公司名称过滤Concept数据,避免直接访问关联实体属性引发的NHibernate查询错误。

内容的提问来源于stack exchange,提问作者Fran Zabaleta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 05:47:28