【发布时间】:2014-06-30 21:25:51
【问题描述】:
我正在尝试找出多个左连接的 LINQ 语法,但出现错误:The name 'c' is not in scope on the left side of 'equals'. Consider swapping the expressions on either side of 'equals'.
我已经尝试过交换,如果我这样做了,它会使 'c' 和 'd' 都出现“不在范围内”错误。
var result =
from a in db.tableA
join b in db.tableB //first join (inner join)
on a.field1 equals b.field1
join c in db.tableC //second join (left join)
on a.field1 equals c.field1
into left_one
join d in db.tableD //third join (left join)
on c.field2 equals d.field2
// ^ here
into left_two
where a.field1 == theValueImSearchingFor
from c in left_one.DefaultIfEmpty()
from d in left_two.DefaultIfEmpty()
select new CombinedObject()
{
...
}
我在第三个连接语句中使用on c.field2 equals d.field2 的原因是我的表结构如下:
tableA: field1
tableB: field1
tableC: field1 field2
tableD: field2
也就是说,将 tableD 与其余数据相关联的唯一方法是使用field2。
有人可以纠正我的语法吗?或者考虑到我的表格设置,我必须采取某种方式吗?
【问题讨论】:
标签: c# linq entity-framework join left-join