【发布时间】:2018-03-14 21:32:55
【问题描述】:
所以我有一个想要转换为 LINQ 的 SQL 查询。
这里说的是查询:
SELECT *
FROM DatabaseA.SchemaA.TableA ta
LEFT OUTER JOIN DatabaseA.SchemaA.TableB tb
ON tb.ShipId = ta.ShipId
INNER JOIN DatabaseA.SchemaA.TableC tc
ON tc.PostageId= tb.PostageId
WHERE tc.PostageCode = 'Package'
AND ta.MailId = 'Specification'
我正在努力解决的问题是,我似乎无法弄清楚如何在内部联接之前在 LINQ 中进行左联接,因为至少对我来说,在 LINQ 中进行左联接并不那么清楚。
我发现了许多 LINQ 内连接然后左连接的示例,但不是左连接然后内连接。
如果有帮助,这是我一直在玩的 LINQ 查询:
var query = from m in tableA
join s in tableB on m.ShipId equals s.ShipId into queryDetails
from qd in queryDetails.DefaultIfEmpty()
join p in tableC on qd.PostageId equals p.PostageId
where m.MailId == "Specification" && p.PostageCode == "Package"
select m.MailId;
我尝试了几种不同的方法,但在 qd.PostageId 上不断收到“对象引用未设置为对象的实例”错误。
LINQ 对我来说非常新,我喜欢学习它,因此非常感谢您对此提供任何帮助。谢谢!
【问题讨论】:
-
是的,我想是的!我还没有实现它,因为我远离我的笔记本电脑,但是在阅读答案后是有道理的。我一定会在明天进行测试并选择最佳答案。谢谢大家!
标签: c# linq join sql-to-linq-conversion