LINQ查询中的多层外键

时间:2010-02-23 13:27:44

标签: c# linq linq-to-sql

如果我有一个FK指向Table2的Table3,它有一个指向Table1的FK,我通过intellisense看到的是我可以从Table3引用Table2但是我不能去Table3.Table2.Table1它只有一个层深。

from t3 in Table3
where t3.t2.property == "some value" && t3.t2.t1.property == "some other value"
select t3.t2.t1;

这实际上是我想要做的,但我只能引用t2,而不是t2有链接的t1。

我应该这样做:

from t3 in Table3
from t1 in Table1
where t3.t2.property == "some value" && t1.property == "some other value"
select t1;

1 个答案:

答案 0 :(得分:3)

您可以加入所有表格:

from t3 in Table3
join t2 in Table2 on t3.Table2_FK equals t2.ID
join t1 in Table1 on T2.Table1_FK equals t1.ID
where t2.property == "some value" && t1.property == "some other value"
select t1;

(编辑)

我不只是深入一层。事实上,你的第一个例子应该有效。当然,你的关系必须是N到1:

Table3 (n) --- (1) Table2 (n) --- (1) Table1

t3 Table3你可以做到:

t3.Table2.Table1

Table2文件中的Table1.dbml之间是否有正确的关联?