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

请求将指定SQL查询转换为Linq Lambda表达式

SQL转Linq Lambda表达式实现

对应第一种IN子查询的SQL写法

// 简洁版实现
var result1 = dbContext.Table1
    .Where(a => dbContext.Table1
        .Where(b => b.Col2 == "Condition")
        .Join(dbContext.Table2, b => b.Col1, c => c.Col1, (b, c) => b.Col1)
        .Contains(a.Col1))
    .ToList();

对应第二种多表隐式连接的SQL写法

这种写法等价于多表内连接,以下两种Lambda实现方式都可以:

// 用Join嵌套实现
var result2 = dbContext.Table1
    .Join(dbContext.Table1, 
          a => a.Col1, 
          b => b.Col1, 
          (a, b) => new { a, b })
    .Join(dbContext.Table2, 
          ab => ab.b.Col1, 
          c => c.Col1, 
          (ab, c) => ab.a)
    .Where(ab => ab.b.Col2 == "Condition")
    .ToList();
// 用SelectMany实现(更贴近原SQL隐式连接逻辑)
var result2 = dbContext.Table1
    .SelectMany(a => dbContext.Table1
                        .Where(b => b.Col1 == a.Col1 && b.Col2 == "Condition")
                        .SelectMany(b => dbContext.Table2
                                                .Where(c => c.Col1 == b.Col1)
                                                .Select(c => a)))
    .Distinct() // 避免隐式连接产生的重复数据
    .ToList();

关键说明

  • Contains方法对应SQL中的IN子查询逻辑
  • Join方法用于处理表间关联,参数依次为关联表、左表关联字段、右表关联字段、关联结果投影
  • 隐式连接用SelectMany实现时,建议添加Distinct避免重复记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:50:22