这是一个示例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表达式得到纠正?感谢您的帮助。