재우니의 블로그

 

 

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을 사용했습니다. 이는 복잡한 쿼리가 있을 때 매우 편리합니다. 쿼리를 여러 하위 표현식으로 나눌 수 있습니다.