2011-05-07 55 views
1

如何實現LEFT OUTER JOIN在LINQ to實體框架。 DefaultIfEmpty函數不受支持。 請提供一個例子。在.NET 3.5左外連接的實體數據模型asp.net

+0

的DefaultIfEmpty功能的EntityFramework 4.支持也許你可以給我們介紹一下你的情況下一些更多的信息,你想用什麼數據,以及哪個版本EF您的正在使用。 – 2011-05-07 09:10:24

+0

@Jared Harding:我正在使用.net 3.5,在entitydatamodel中實現左外連接該怎麼做。 – 2011-05-07 09:18:22

回答

3

實體框架不提供左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 
       }; 
3

這在.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 

};