【发布时间】:2014-04-09 02:26:46
【问题描述】:
不确定如何将以下 sql 转换为 LINQ 表达式。我的数据库确实使用了参照完整性,并且表 Content 与表 Content_Training 以一对多的关系相关(例如:1 个内容可以有多个 content_training)。
select c.ContentId, c.Name, ct.TrainingTypeId
from dbo.Content c left join dbo.ContentTraining ct on c.ContentId = ct.ContentId
where c.ExpirationDate is not null
order by ct.TrainingTypeId, c.Name
我已经尝试过了,这似乎有效。但是,我不确定“let”关键字的用法。
var data = (from c in context.Contents
let ct = ( from t in context.Content_Training where t.ContentId == c.ContentId
select new { t.TrainingTypeId } ).FirstOrDefault()
where c.ExpirationDate.HasValue
orderby ct.TrainingTypeId, c.Name
select new { c.ContentId, c.Name, ct.TrainingTypeId } ).ToList();
【问题讨论】:
-
@第 8 位:添加了我迄今为止尝试过的内容。
-
您的标题显示“左连接”,但您显示的 SQL 正在执行内部连接,所以我不清楚您要完成哪个操作。
-
Craig W:很抱歉。是的,我确实想要一个左连接。我编辑了我的 sql。
-
您是不是在另一个用户名下问了完全相同的问题? stackoverflow.com/questions/22951644/…
标签: c# sql linq entity-framework