如何在Linq中实现左外连接到实体框架。不支持DefaultIfEmpty函数。 请举例。
答案 0 :(得分:4)
这适用于.NET 3.5。当您在不使用“from”和FirstorDefault函数的情况下加入时,它将为您提供左侧连接表中要查找的行。如果你想要多行,只需使用where()代替..希望这会有所帮助。
====
comments = from p in _db.Master
join t in _db.Details on p.DetailID equals t.DetailID into tg
select new
{
A = p.Column1,
//this next column is the one from the left joined table
B = tg.FirstOrDefault(t => t.DetailID == p.DetailID).Column2
};
答案 1 :(得分:3)
.NET 3.5中的实体框架不提供Linq查询中的左连接。获取“联合记录”的方法是通过实体之间的导航属性。类似的东西:
var query = from u in context.Users
select new
{
User = u,
Orders = u.Orders.Where(...) // Filtered left join but User and Order must be related
};