2013-11-15 151 views
0

如何更改的培訓活動爲左外的培訓活動在加入即時通訊LINQ非常基本的所以請原諒我的無知,其不檢索沒有重視它左outter加入LINQ

var q = from need in pamsEntities.EmployeeLearningNeeds 
        join Employee e in pamsEntities.Employees on need.EmployeeId equals e.emp_no 
        join tevent in pamsEntities.TrainingEvents on need.TrainingEventId equals tevent.RecordId        
        where need.EmployeeId == employeeId 
        where need.TargetDate >= startdate 
        where need.TargetDate <= enddate 
        orderby need.TargetDat 
任何trainnevent引用記錄

回答

0

最好與DefaultIfEmpty結合使用。

在這裏看到:LEFT JOIN in LINQ to entities?

var query2 = (
    from users in Repo.T_Benutzer 
    from mappings in Repo.T_Benutzer_Benutzergruppen.Where(mapping => mapping.BEBG_BE == users.BE_ID).DefaultIfEmpty() 
    from groups in Repo.T_Benutzergruppen.Where(gruppe => gruppe.ID == mappings.BEBG_BG).DefaultIfEmpty() 
    //where users.BE_Name.Contains(keyword) 
    // //|| mappings.BEBG_BE.Equals(666) 
    //|| mappings.BEBG_BE == 666 
    //|| groups.Name.Contains(keyword) 

    select new 
    { 
     UserId = users.BE_ID 
     ,UserName = users.BE_User 
     ,UserGroupId = mappings.BEBG_BG 
     ,GroupName = groups.Name 
    } 

    ); 


var xy = (query2).ToList(); 

即相當於此select語句:

SELECT 
    T_Benutzer.BE_User 
    ,T_Benutzer_Benutzergruppen.BEBG_BE 
    -- etc. 
FROM T_Benutzer 

LEFT JOIN T_Benutzer_Benutzergruppen 
    ON T_Benutzer_Benutzergruppen.BEBG_BE = T_Benutzer.BE_ID 

LEFT JOIN T_Benutzergruppen 
    ON T_Benutzergruppen.ID = T_Benutzer_Benutzergruppen.BEBG_BG 
+0

非常感謝的是,高清法律兩名來自語句只是從來沒有看到,之前他們的任何地方,說明了兩個表格是合法的 – rogue39nin