C# LINQ 쿼리 작성법: 지연 실행과 SQL 차이 이해하기
LINQ는 C# 컬렉션과 데이터 원본을 일관된 문법으로 조회하게 해주지만 SQL 문자열을 실행하는 기능과 같지는 않습니다. 쿼리가 언제 실행되는지, 어떤 공급자가 해석하는지, 결과를 한 번 고정해야 하는지를 먼저 이해해야 해요. from, where, select로 이어지는 기존 LINQ 쿼리 예제입니다. 기존 예제의 결과 화면입니다. 실제 실행 시점은 결과를 열거하는 시점일 수 있습니다. 먼저 확인할 답 LINQ는 C# 컬렉션과 데이터 원본을 일관된 문법으로 조회하게 해주지만 SQL 문자열을 실행하는 기능과 같지는 않습니다. 쿼리가 언제 실행되는지, 어떤 공급자가 해석하는지, 결과를 한 번 고정해야 하는지를 먼저 이해해야 해요. 쿼리 구문은 컴파일 과정에서 메서드 호출로 바뀐다 from item in items where item.Score >= 80 select item.Name 같은 구문은 읽기 친숙하지만, 컴파일러는 Where와 Select 같은 표준 쿼리 연산자 호출로 변환합니다. 쿼리 구문과 메서드 구문 가운데 하나가 더 빠르다고 단정하기보다 팀이 읽기 쉬운 형태와 필요한 연산자를 기준으로 고르세요. 모든 연산자가 쿼리 키워드로 제공되는 것은 아니어서 Count, ToList 같은 메서드를 뒤에 연결하는 경우가 많습니다. 한 쿼리 안에서 두 형태를 섞어도 되지만 변환 단계가 길어지면 중간 변수와 의미 있는 이름으로 나누는 편이 좋습니다. 지연 실행은 결과를 읽는 순간 원본을 다시 볼 수 있다 IEnumerable<T>를 반환하는 많은 LINQ 연산은 쿼리를 선언할 때가 아니라 foreach로 열거할 때 실행됩니다. 선언 뒤 원본 컬렉션이 바뀌면 결과도 달라질 수 있고, 같은 쿼리를 두 번 열거하면 작업도 두 번 수행될 수 있어요. 특정 시점의 결과가 필요하면 ToList나 ToArray로 구체화합니다. 즉시 실행은 편하지만 데이터가 큰 경우 메모리를 사용합니다. 지연 실행이 항상 좋거나 ToList가 항상 나쁜 것이 아니라, 결과...