2016-05-11 92 views
-1

我有低于SQL查询,我希望它转换为LambdaLinq表达式为C#转换SQL查询与LEFT加入到lambda或Linq表达式

SELECT DISTINCT employeeid 
INTO #temp 
FROM [dbo].DOCS 
WHERE companyid = 1 
    AND taxyear = 2015 

SELECT DISTINCT e.EmployeeId, 
       e.EmployeeName 
FROM Employees e 
LEFT JOIN #temp t ON e.EmployeeId = t.employeeid 
WHERE CompanyId = 1 
ORDER BY EmployeeName 
+0

我要过滤第一DOCS表,然后想留下员工表连接。没有得到它如何处理Linq或Lambda表达式 – NeilSah

+0

Google'Linqer' - sql到linq转换器 – sagi

+0

下面的表达式我试过了,但这给了错误的行数 - (从db.Employees中的l连接到db.DOCS中的p上l.EmployeeId在temp.DefaultIfEmpty()等于p.EmployeeId 到临时从j 其中l.CompanyId == cust.Id && j.CompanyId == cust.Id && j.TaxYear == taxYear 选择新的{l.EmployeeId,l.EmployeeName})。Distinct()。OrderBy(X => X.EmployeeName).ToList(); – NeilSah

回答

0

它解决了,我得到了以下的解决方案 -

var result = 
(from l in db.Employees 
join p in db.docs.Where(j => j.CompanyId == 1 && j.TaxYear == 2015) 
on l.EmployeeId equals p.EmployeeId into temp  
where l.CompanyId == 1 
    select new 
     { EmployeeId = l.EmployeeId, 
     EmployeeName = l.EmployeeName 
}).Distinct().OrderBy(X => X.EmployeeName).ToList();