2011-03-29 24 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