Как присоединиться к LINQ, используя лямбда-выражения и получить результат в DTO? - PullRequest
2 голосов
/ 21 июня 2010

var query = от e в DataContext.Employees присоединиться к d в DataContext.Dept на e.DeptId равно d.Id присоединиться к в DataContext.OtherInfo на e.Id равно o.EmployeeId где e.EmployeeId == 4 выберите нового Employee_Dept // DTO { EmployeeName = e.Name, DEPTNAME = d.Name EmployeeID = e.ID DeptId = d.Id ContactNo = o.ContactNo }

Я хочу написать это, используя лямбда-выражения, это можно написать -

var query = DataContext.Employees.Join(Dept,e=>e.DeptId,d=>d.Id,(e,d)).Where(e=>e.EmployeeId=4)

Может кто-нибудь помочь мне завершить этот запрос. Спасибо за вашу помощь.

Ответы [ 2 ]

6 голосов
/ 21 июня 2010

Я согласен с Крейгом Штунцем, что использование Join является неправильным, но вы можете выразить тот же запрос LINQ, используя методы расширения следующим образом:

return DataContext.Employees
         .Join(DataContext.Dept, e => e.DeptId, d => d.Id, (e,d) => new { Employee = e, Department = d })
         .Join(DataContext.OtherInfo, s => s.Employee.Id, o => o.EmployeeId, (s, o) => new { Employee => s.Employee, Department = s.Department, OtherInfo = o })
         .Where(e => e.Employee.Id == 4)
         .Select(e => select new Employee_Dept//DTO
          {
              EmployeeName=e.Employee.Name,
              DeptName=e.Department.Name
              EmployeeId=e.Employee.ID
              DeptId=e.Department.Id
              ContactNo=e.OtherInfo.ContactNo
          }
4 голосов
/ 21 июня 2010

Обычно неправильно использовать join в LINQ to SQL . Просто напишите:

var query=from e in DataContext.Employees
          where e.EmployeeId==4 
          select new Employee_Dept//DTO
          {
              EmployeeName=e.Name,
              DeptName=d.Dept.Name
              EmployeeId=e.ID
              DeptId=d.Dept.Id
          }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...