如何为包含自连接的多个连接编写LINQ
本文关键字:连接 LINQ 包含 自连接 | 更新日期: 2023-09-27 18:07:38
我试图将以下带有自连接的查询翻译为LINQ表达式。
select r2.* from depends d
join request r on d.DESC =r.DESC
join request r2 on d.ID=r2.ID
and d.TYPE ='sometype'
where r.ID= 12345
我如何纠正以下LINQ查询以匹配上面正确的SQL查询?
var result = (from d in depends
join r in request on d.DESC equals r.DESC
join r2 in request on d.ID == r2.ID && d.TYPE == incomingType.ToString()
where r.ID == incomingId
select r2).AsEnumerable();
如果您的incomingType
是固定的,为什么不简单地使用Where
条款呢?
也有用于多个连接条件的语法,如下所示:
例如:
var result = (from d in depends
where d.TYPE == incomingType.ToString()
join r in request on
new { ID = r.ID, desc = r.DESC }
equals
new { ID = d.ID, desc = d.DESC }
where r.ID == incomingId
select r).AsEnumerable();
如果你的incomingType
实际上不是固定的,并且它从depends
表中获得它的值,你可以只添加第三个参数到连接条件,例如
var result = (from d in depends
where d.TYPE == incomingType.ToString()
join r in request on
new { ID = r.ID, desc = r.DESC, type = r.someType1 }
equals
new { ID = d.ID, desc = d.DESC, type = d.someType2 }
where r.ID == incomingId
select r).AsEnumerable();