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
相关产品推荐
相关产品推荐

