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

请求将含子查询的指定SQL语句转换为LINQ语句

对应SQL的LINQ查询实现

原SQL的逻辑是:查询Project表的ProjectId、CompanyId、Status字段,同时判断当前项目是否存在Level > 1的关联子项目(通过MasterProjectId匹配),存在则HasSubProjects取1,否则取0。

以下是两种等价的LINQ实现方式:

查询语法

var query = from a in dbContext.Projects
            select new 
            {
                a.ProjectId,
                a.CompanyId,
                a.Status,
                HasSubProjects = dbContext.Projects
                    .Any(b => b.MasterProjectId == a.MasterProjectId && b.Level > 1) ? 1 : 0
            };

方法语法

var query = dbContext.Projects
    .Select(a => new 
    {
        a.ProjectId,
        a.CompanyId,
        a.Status,
        HasSubProjects = dbContext.Projects
            .Any(b => b.MasterProjectId == a.MasterProjectId && b.Level > 1) ? 1 : 0
    });

说明

  • 用Any()方法替代原SQL的SELECT TOP 1 1,因为Any()会检查是否存在符合条件的记录,逻辑和原SQL完全一致,且生成的SQL执行效率相近。
  • 结果会返回一个匿名类型集合,包含原SQL指定的所有字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 05:07:06