2012-02-14 86 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