繁体   English   中英

如何为涉及自连接的多个连接编写LINQ?

[英]How to write LINQ for multiple joins involving self join?

我正在尝试将以下查询与自我联接转换为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子句呢?

另外,还有多个联接条件的语法,如下所示: LINQ使用多个条件在C#中联接

例如:

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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM