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

如何使用LINQ实现左外连接筛选Table1中与Table2无匹配的记录

基于DBContext的LINQ左外连接实现筛选需求

需求说明

从Table1中查询所有记录,排除那些在Table2中存在匹配(ID和Code同时相等)的记录,必须通过左外连接实现。

示例数据:

  • Table1:包含记录ID为1、2、3
  • Table2:包含记录ID为1、2
    预期结果:仅返回Table1中ID为3的记录

对应的SQL语句:

select t1.*
from table1 t1
left outer join table2 t2 on t1.ID = t2.ID and t1.Code = t2.Code 
where t2.ID is null

LINQ查询实现

使用EF Core的DBContext,对应的查询表达式写法如下:

var query = from t1 in dbContext.Table1
            // 基于ID和Code的左外连接,将匹配结果分组到joinedT2
            join t2 in dbContext.Table2
            on new { t1.ID, t1.Code } equals new { t2.ID, t2.Code } into joinedT2
            // 左外连接核心:无匹配项时返回null
            from t2 in joinedT2.DefaultIfEmpty()
            // 筛选Table2中无匹配的Table1记录
            where t2 == null
            select t1;

逻辑说明

  • into joinedT2用于将左外连接的匹配结果创建为分组集合
  • DefaultIfEmpty()确保当Table2中没有匹配项时,t2会被赋值为null
  • where t2 == null对应SQL中的t2.ID is null,精准筛选出目标记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 00:55:17