左外加入实体数据模型asp.net

时间:2011-05-07 08:29:34

标签: asp.net entity-framework linq-to-entities

如何在Linq中实现左外连接到实体框架。不支持DefaultIfEmpty函数。 请举例。

2 个答案:

答案 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
               };