LINQ: let 절
SELECT
CONCAT(e.FirstName, ' ', e.LastName) AS FullName
FROM
Employees e
WHERE
e.DepartmentId IN (
SELECT
d.Id
FROM
Departments d
WHERE
d.IsWfhAllowed = 1
);
이 글에서는 LINQ 쿼리 구문 쿼리에서 let이 무엇인지 살펴보겠습니다. LINQ에서 간과되는 기능이라고 생각합니다.
IQueryable<string> wfhEmployees = from e in context.Employees
where context.Departments
.Where(d => d.IsWfhAllowed)
.Select(d => d.Id)
.Contains(e.DepartmentId)
select e.FirstName + " " + e.LastName;
여기서 where 조건을 바로 이해하기 어려운 분들을 위해 let 절을 사용하여 가독성을 높일 수 있습니다.
IQueryable<string> wfhEmployees = from e in context.Employees
let wfhDepartments = context.Departments
.Where(d => d.IsWfhAllowed)
.Select(d => d.Id)
.ToList()
where wfhDepartments
.Contains(e.DepartmentId)
let fullName = e.FirstName + " " + e.LastName
select fullName;
여기서는 후속 절에서 사용하기 위해 하위 표현식의 결과를 저장하기 위해 let을 사용했습니다. 이는 복잡한 쿼리가 있을 때 매우 편리합니다. 쿼리를 여러 하위 표현식으로 나눌 수 있습니다.