日期:2014-05-20  浏览次数:20760 次

求一个linq写法
表逻辑是这样的 Test表引用了TripLine 表的ID,为一对一关系。
而TripLine表和TripLinePlan 是一对多的关系,因为要用到TripLinePlan 表中的列进行条件判断,所以进行3表关联查询。

sql 语句如下:


select a.* from Test a 
inner join TripLine b on a.RefID=b.ID
inner join 
(
select distinct(a.ID) from TripLine a 
left join TripLinePlan b on a.ID=b.TripLineID
where b.OnlineFlag=1 and c.CreateDate <='2013-08-08'
) c on b.ID=c.ID
where  b.OnlineFlag = 1 





用linq 该怎么写?另外有什么更好的逻辑么?

麻烦各位高手指点下。
LINQ SQL

------解决方案--------------------
本帖最后由 q107770540 于 2013-08-08 08:53:00 编辑
var query=from a in Test
          join b in TripLine on a.RefID equals b.ID
          join c in TripLinePlan on b.ID equals c.TripLineID into lg
          from c in lg.DefaultIfEmpty()
          where c.OnlineFlag==1 && c.CreateDate <=Convert.ToDateTime("2013-08-08")
          select a;

------解决方案--------------------
如果 LINQ 使问题变得复杂了,就没必要用了,直接用 SQL
------解决方案--------------------
使用工具linqpad先写sql语句查询,然后可以转到linq语法上,祝你好运,可以试试