多表连接与多个表where子句

时间:2014-06-27 20:06:31

标签: c# .net linq

我有一个像这样的查询。

Select a.*
from table1 a
inner join table2 b on a.field1 = b.field1
inner join table3 c on b.field2 = c.field2
where b.field4 = beta and c.field5 = gamma.

在LINQ上,我尝试这样做:

var query = (from a in table1
             join b in table2 on a["field1"] equals b["field1"]
             join c in table3 on b["field2"] equals c["field2"]
             where (b["field4"] == beta && c["field5"] == gamma)
             select a).ToList();

但由于某种原因,当我尝试这样做时,我得到一个错误,表明实体“table2”没有字段Name =“field5”,好像where子句是关于最后一次加入的桌子和其他桌子是无法进入的。此外,编译器似乎也没有注意到,因为它允许我写c [“field5”] == gamma而没有警告。

有什么想法吗?我写错了吗?

由于

1 个答案:

答案 0 :(得分:0)

请参阅以下链接:
How to: Perform Inner Joins (C# Programming Guide)
What is the syntax for an inner join in linq to sql?
为什么不在数据库中创建View,从LINQ中的View中选择数据?