2011-03-29 33 views
1

表1
LINQ - 多個表

TID:

TNAME:

TDESC:

表2:

AID:

ANAME:

ADESC:

表3

TID:

AID:

如何通過在表1中傳遞TNAME來編寫Linq查詢來獲取table2的列表。:

請幫忙!

回答

1

您需要使用連接。像這樣

from t1 in db.Table1 
join t2 in db.Table2 on t1.field equals t2.field 
select new { t1.field2, t2.field3} 

PLZ,赤LinqJoin

+0

這裏我有一個關聯表,它只有TID,使用它我必須得到相應的TNAME,所以它不像多重連接。 – user669803 2011-03-29 20:28:29

5

假設你已經在數據庫中正確的FK關係中,你只需要輸入

from t2 in context.table2s 
where t2.table3.table1.TNAME == "SomeName" 
select t2 

編輯
如果您還沒有夷在你的數據庫中,你可以通過在DBML設計器中繪製關係來「作弊」,或者你需要求助於明確的加入

from t2 in context.table1s 
join t3 in context.table3s 
    on t2.AID equals t3.AID 
join t1 in context.table1s 
    on t3.TID equals t1.TID 
where t1.TNAME == "SomeName" 
select t2 
+0

感謝您的回覆,我的表格有以下關係: – user669803 2011-03-29 20:25:06

+0

它只是與相應的ID相關,但查詢不適用於我。 – user669803 2011-03-29 20:26:36

+0

@ user669803,那麼您需要在數據庫中創建外鍵,或者至少在DBML設計器中創建外鍵,作爲最後的解決方案,您可以像我更新的答案中那樣明確加入。 – 2011-03-30 05:20:42