这里有很多关于如何在 Linq 中进行准左连接的示例(this,also this,甚至this)。他们都指向将少数父表连接到“外部”表中,然后使用DefaultIfEmpty()
. 听起来很简单,所以我在 LinqPad 中创建了这个片段:
dim foo = (
from c in context.Contacts
join p in context.Plants on c.PlantID equals p.PlantID into outer
from o in outer.DefaultIfEmpty()
where p.PlantCode = 2
select c.ContactName, p.PlantName
)
等效的 SQL 语句将是:
SELECT c.ContactName, p.PlantName
FROM Contacts c
LEFT JOIN Plants p ON c.PlantID = p.PlantID
WHERE p.PlantCode = 2
看起来它应该可以工作,但 LinqPad 一直在join...into
这条错误线上停止:')' expected.
难道我做错了什么?还是 LinqPad 疯了?