[英]How can I rewrite the following SQL query into LINQ query?
I want to rewrite the following SQL query in LINQ.我想在 LINQ 中重写以下 SQL 查询。 But my problem is that I don't know how to write an AND (&&) operator with a LINQ LEFT JOIN (look at my second left join).但我的问题是我不知道如何使用 LINQ LEFT JOIN 编写 AND (&&) 运算符(看看我的第二个左连接)。
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
I tried the following one.我尝试了以下一种。 But getting compile error-但是得到编译错误-
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
}
Try this.尝试这个。
(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();
OK you can try like this;好的,你可以这样试试;
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};
Or like this;或者像这样;
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};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.