2013-11-15 124 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