2012-02-14 89 views
0

请帮我将此查询转换为Linq to Entities。带有LEFT JOIN的LINQ请求返回不是预期的结果

SELECT 
    d.`DepartmentId`, 
    d.`ParentDepartmentId`, 
    d.`LeftKey`, 
    d.`RightKey`, 
    udp.`UserId`, 
    udp.`IsAllowed` 
FROM 
    Departments AS d 
    LEFT JOIN UserDepartmentPermissions AS udp 
     ON udp.`DepartmentId` = d.`DepartmentId` 
WHERE d.`IsExcluded` = 0 

我特林这样的:

(from d in Departments 
    join udp in UserDepartmentPermissions 
    on d.DepartmentId equals udp.DepartmentId into JoindedDepsUserPermissions 
    from udp in JoindedDepsUserPermissions.DefaultIfEmpty() 
    where d.IsExcluded == 0 
    select new 
    { 
     d.DepartmentId, 
     d.ParentDepartmentId, 
     d.LeftKey, 
     d.RightKey, 
     udp.UserId, 
     udp.IsAllowed 
    }).ToList(); 

但它不返回相同的结果...

任何人可以帮助?

回答

1

尝试

var result = Deparments.Where(d => d.IsExcluded == 0) 
      .Select(d => new { 
        d.DepartmentId, 
        d.ParentDepartmentId, 
        d.LeftKey, 
        d.RightKey, 
        d.Permissions 
       }); 

使用导航财产Department访问权限

+0

这样就OK了,但有点变通方法。谢谢 :) – 2012-02-20 15:17:41