2009-11-06 110 views
1

假設我有3個表格:A(aid,...),B(bid,...)Relationship(aid,bid,...) 然後我有一個幫助作爲參數,我想要得到結果從b。如果使用SQL,將會像如何編寫linq從不同的表中獲取數據?

select b.* from B join Relationship on b.bid = Relationship.bid 
where relationship.aid = aid_param 

如何編寫linq,其結果與上面的SQL相同。 (在這種情況下外鍵沒有正確創建)?

回答

0
var bQuery = from r in MyContext.Relationship 
      where r.aid == aid_param 
      select r.B; 

如果你沒有關係,在模型中設置,那麼在哪裏:

var bQuery = from b in myContext.B 
      where myContext.Relationship 
       .Any(r => r.aid == aid_param && b.bid == r.bid) 
      select b; 
1

假設你已經使用了設計師的表添加到LINQ數據上下文和你要麼在數據庫中定義外鍵關係,要麼在設計器中手動編碼關聯,您應該只需引用B表和它的關係屬性的EntitySet,按照您的參數進行過濾,並檢查是否存在任何匹配。從B
從關係

var relationships = db.B.Any(b => b.Relationships.Where(r => r.aid == aid_param)); 
+0

@tvanfosson他想要選擇B(等在我的回答中),而不是關係。 – eglasius 2009-11-06 19:22:14

+0

糟糕。我已更新選擇任何具有匹配關係的B。 – tvanfosson 2009-11-06 19:31:54

0

VAR輸出= 其中(b.bid = Relationship.bid,
relationship.aid = aid_param)

相關問題