SELECT p.Id,p.[Name],ov.[Name] FROM organization_View ov
LEFT JOIN organization_people op ON ov.id=op.Organization_ID
LEFT JOIN People p ON p.Id=op.pid
WHERE op.Organization_ID IN (46,37) AND p.Isvalid=1 AND p.IsLocked=1

解决方案 »

  1.   


    //如果46,37就两个可以写成||如果比较多,可以事先放进List<int> oIdList
        var query = from ov in db.organization_Views 
                    join op in db.organization_peoples on ov.id equals op.Organization_ID
                    join  p in db.Peoples on p.Id equals op.pid
                    join oId in oIdList on oId equals op.Organization_ID
                    select new{p, Name = ov.Name}
    SELECT p.Id,p.[Name],ov.[Name] FROM organization_View ov
    LEFT JOIN organization_people op ON ov.id=op.Organization_ID
    LEFT JOIN People p ON p.Id=op.pid
    WHERE op.Organization_ID IN (46,37) AND p.Isvalid=1 AND p.IsLocked=1
      

  2.   

    //如果46,37就两个可以写成||如果比较多,可以事先放进List<int> oIdList
        var query = ((from ov in db.organization_Views 
                    join op in db.organization_peoples on ov.id equals op.Organization_ID).DefaultIfEmpty()
                    join  p in db.Peoples on p.Id equals op.pid).DefaultIfEmpty()
                    join oId in oIdList on oId equals op.Organization_ID
                    where p.Isvalid=1 and p.IsLocked=1
                    select new{p, Name = ov.Name}
      

  3.   

    上面的还需要用let或者into中转里面的join
    http://www.cnblogs.com/RChen/archive/2008/07/24/1250736.html