2010-04-12 54 views
0

執行包含多對多Linq查詢我不知道如何使用Linq和EF執行此查詢。如何使用EF

想象我有三個表A,B和C.

A和B具有一個多到多的關係。 B和C有一對多的關係。

我想從包括C在內的B獲取記錄,但是從A的Id中過濾。我可以通過B獲得輕鬆記錄:

var result = Context.A.Where(x => x.Id.Equals(aId)).SelectMany(x => x.B); 

,但是當我嘗試包括CI不知道如何做到這一點:

//This doesn't work  
var result = Context.A.Where(x => x.Id.Equals(aId)).SelectMany(x => x.B.Include("C")); 

而且我已經沒有運氣嘗試這樣做(這相當於以上):

//Not working 
var result = (from a in Context.A.Where(x => x.Id.Equals(aId)) 
       from b in a.B.Include("C") 
       select b); 

感謝您的幫助。

+0

檢查有沒有上下文中的ID的任何空值。如果外鍵中有任何空值,則會拋出錯誤。 – anishMarokey 2010-04-12 15:40:20

回答

1

OK,我發現Any擴展方法...

這是解決方案:

var result = (from b in Context.B.Include("C") 
       where b.A.Any(x => x.A.Equals(aId)) 
       select b);