使用Linq Lambda表达式与多个on语句进行多个连接

时间:2017-05-25 17:22:32

标签: c# sql-server linq lambda

这是一个示例SQL查询,我想将其转换为Linq Lambda表达式。

Select u.unitName
from dbo.cmp c
inner join dbo.unit u on c.UnitProducerId = u.unitid
inner join dbo.unit u1 on c.unitid = u1.unitid
inner join dbo.catalogpart cp on u.unitid = cp.unitid and c.producer = cp.producercode
where u.unitid = 'A8311A16-3C3B-47B4-8184-7A9E336081F1'
group by u.unitName

我想将上面的SQL转换为Linq Lambda表达式,如下所示。

context.cmp
.Join(context.Units, cmp => cmp.UnitProducerId, u => u.UnitId, (cmp, u) => new { cmp, u })
.Join(context.Units, m1 => m1.cmp.unitId, u1 => u1.UnitId, (m1, u1) => new { m1, u1 })
.Join(context.CatalogParts, m2 => m2.m1.u.unitId, cp => cp.UnitId, (m2, cp) => new { m2, cp })
.select(new {
    supplier = m2.m1.u.UnitName
    }
.groupby(g => g.UnitName)
.selectMany(s=> s);  

当我运行这个Lambda表达式时,它没有给我正确的结果(与SQL查询的结果相比)。我无法在单个连接线中添加两个on语句。

inner join dbo.catalogpart cp on u.unitid = cp.unitid and c.producer = cp.producercode

我怎样才能让Lambda表达式得到纠正?感谢您的帮助。

0 个答案:

没有答案