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

C# LINQ入门求助:带WHERE条件的两表关联SQL转LINQ

LINQ查询语法(和SQL逻辑高度对应,更适合初学者理解)

// 请将代码中的 dbContext 替换为你项目里实际的EF上下文实例名
// 上下文需提前定义对应实体的DbSet:
// public DbSet<WellActivity> WellActivities { get; set; }
// public DbSet<OffsetWells> OffsetWells { get; set; }

var queryResult = from activity in dbContext.WellActivities
                  join well in dbContext.OffsetWells
                  on activity.Alias equals well.RubbishWellNames // 对应SQL的INNER JOIN关联条件
                  where well.WellNames == "ZZ-04" // 对应WHERE过滤规则
                  select new 
                  {
                      well.WellNames,
                      activity.Date,
                      activity.Activity,
                      activity.ActivityRtf,
                      activity.Type,
                      activity.Diff,
                      activity.Report,
                      activity.LastModifiedBy,
                      activity.LastModifiedDate
                  };

LINQ方法语法写法

var queryResult = dbContext.WellActivities
    .Join(
        dbContext.OffsetWells,
        activity => activity.Alias, // 左表(WellActivity)的关联字段
        well => well.RubbishWellNames, // 右表(OffsetWells)的关联字段
        (activity, well) => new { activity, well } // 关联后的临时存储对象
    )
    .Where(item => item.well.WellNames == "ZZ-04")
    .Select(item => new 
    {
        item.well.WellNames,
        item.activity.Date,
        item.activity.Activity,
        item.activity.ActivityRtf,
        item.activity.Type,
        item.activity.Diff,
        item.activity.Report,
        item.activity.LastModifiedBy,
        item.activity.LastModifiedDate
    });

补充说明

  • 两种写法最终生成的SQL和你提供的原生SQL完全一致,返回结果无差异
  • 上述代码用了匿名类承接查询结果,如果你需要强类型返回,可以自定义对应的DTO类替换匿名类结构
  • 执行查询时如果要立即拿到结果,可在语句末尾加上.ToList()/.FirstOrDefault()等执行方法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 12:06:03