2016-01-21 93 views
-1

我想在LINQ中重寫下面的sql查詢。但我的問題是,我不知道如何用LINQ LEFT JOIN寫入添加AND(& &)運算符(查看我的第二個左連接)。任何人都可以幫忙嗎?如何將以下SQL查詢重寫爲LINQ查詢?

SELECT  emp.EmployeeId, 
      dsg.Name, 
      pob.CompanyContribution, 
      pob.EmployeeContribution, 
      pob.OpeningIncome 

FROM  HrmEmployees AS emp 
LEFT JOIN HrmDesignations AS dsg ON emp.HrmDesignationId=dsg.Id 
LEFT JOIN PfmOpeningBalance AS pob ON emp.Id=pob.HrmEmployeeId AND pob.CmnCalendarYearId=2 
WHERE  emp.Id=6 

我試了下面的一個。但編譯錯誤 -

from emp in dbContext.EmployeeList 
         join dsg in dbContext.hrmDesig on emp.HrmDesignationId equals dsg.Id into DSGLeftJoin 
         from dsglj in DSGLeftJoin.DefaultIfEmpty() 
         join pob in dbContext.PfOpeningBalances on emp.Id equals pob.HrmEmployeeId into POBLeftJoin 
         from poblj in POBLeftJoin.DefaultIfEmpty() && poblj.CmnCalendarYearId == clndrId 
         where emp.Id==empId 
         select new 
         { 
          empIdr = emp.Id, 
          EmployeeId = emp.EmployeeId, 
          EmployeeName = emp.Name, 
          Designation = dsglj.Name, 
          OpeningIncome = poblj.OpeningIncome, 
          EmployeeContribution = poblj.EmployeeContribution, 
          CompanyContribution = poblj.CompanyContribution 
         } 
+1

任何你試過的東西? – Irshad

+0

是的,但得到編譯錯誤。可能是錯誤是爲wron語法@Irshad –

+1

在帖子中顯示代碼,我們可以幫助您 – Irshad

回答

0

試試這個。

(from emp in HrmEmployees 
    join dsg in HrmDesignations 
    on emp.HrmDesignationId equals dsg.Id 
    join pob in PfmOpeningBalance 
    on emp.Id equals pob.HrmEmployeeId AND pob.CmnCalendarYearId equals 2 
    into eGroup 
    from emps in eGroup.DefaultIfEmpty() 
    emp.Id=6 
    select new 
    { 
     EmployeeId =emp.EmployeeId, 
     Name=dsg.Name, 
     CompanyContribution=pob.CompanyContribution, 
     EmployeeContribution=pob.EmployeeContribution, 
     OpeningIncome=pob.OpeningIncome 
    }).ToList(); 
0

OK你可以試試這樣;

from emp in dbContext.EmployeeList 
join dsg in dbContext.hrmDesig on emp.HrmDesignationId=dsg.Id 
join pob in dbContext.PfOpeningBalanceson new {emp.Id, jp=pob.CmnCalendarYearId} equals new {pob.HrmEmployeeId, jp=2} 
where emp.Id=6 
select new {emp.EmployeeId, 
      dsg.Name, 
      pob.CompanyContribution, 
      pob.EmployeeContribution, 
      pob.OpeningIncome}; 

或者像這樣;

from emp in dbContext.EmployeeList.Where(e=>e.Id.Equals(6)) 
join dsg in dbContext.hrmDesig on emp.HrmDesignationId=dsg.Id 
join pob in dbContext.PfOpeningBalanceson.Where(x=>x.CmnCalendarYearId.Equals(2)) on emp.Id equals pob.HrmEmployeeId 
select new {emp.EmployeeId, 
      dsg.Name, 
      pob.CompanyContribution, 
      pob.EmployeeContribution, 
      pob.OpeningIncome};