다음을 통해 공유


LINQ to Entities의 쿼리

쿼리는 데이터 원본에서 데이터를 검색하는 식입니다. 쿼리는 일반적으로 관계형 데이터베이스에 대한 SQL 및 XML용 XQuery와 같은 특수 쿼리 언어로 표현됩니다. 따라서 개발자는 쿼리하는 데이터 원본 또는 데이터 형식의 각 형식에 대한 새 쿼리 언어를 학습해야 했습니다. LINQ(Language-Integrated Query)는 다양한 종류의 데이터 원본 및 형식에서 데이터를 사용하기 위한 더 간단하고 일관된 모델을 제공합니다. LINQ 쿼리에서는 항상 프로그래밍 개체를 사용합니다.

LINQ 쿼리 작업은 데이터 원본 또는 원본을 가져오고, 쿼리를 만들고, 쿼리를 실행하는 세 가지 작업으로 구성됩니다.

제네릭 인터페이스 IEnumerable<T>IQueryable<T>를 구현하는 데이터 원본은 LINQ를 통해 쿼리할 수 있습니다. 제네릭 인터페이스를 구현하는 제네릭 ObjectQuery<T>IQueryable<T> 클래스의 인스턴스는 LINQ to Entities 쿼리의 데이터 원본 역할을 합니다. 제네릭 클래스는 ObjectQuery<T> 형식화된 개체가 0개 이상인 컬렉션을 반환하는 쿼리를 나타냅니다. C# 키워드 var (Visual Basic에서는 Dim)를 사용하여 컴파일러가 엔터티의 형식을 유추하도록 할 수도 있습니다.

쿼리에서 데이터 원본에서 검색하려는 정보를 정확하게 지정합니다. 쿼리는 정보를 반환하기 전에 정렬, 그룹화 및 셰이닝하는 방법을 지정할 수도 있습니다. LINQ에서 쿼리는 변수에 저장됩니다. 쿼리가 값 시퀀스를 반환하는 경우 쿼리 변수 자체는 쿼리 가능한 형식이어야 합니다. 이 쿼리 변수는 아무 작업도 수행하지 않고 데이터를 반환하지 않습니다. 쿼리 정보만 저장합니다. 쿼리를 만든 후에는 해당 쿼리를 실행하여 데이터를 검색해야 합니다.

쿼리 구문

LINQ to Entities 쿼리는 쿼리 식 구문과 메서드 기반 쿼리 구문의 두 가지 구문으로 작성할 수 있습니다. 쿼리 식 구문은 C# 3.0 및 Visual Basic 9.0의 새로운 구문이며 Transact-SQL 또는 XQuery와 유사한 선언적 구문으로 작성된 절 집합으로 구성됩니다. 그러나 .NET Framework CLR(공용 언어 런타임)은 쿼리 식 구문 자체를 읽을 수 없습니다. 따라서 컴파일 시간에 쿼리 식은 CLR이 이해하는 메서드 호출로 변환됩니다. 이러한 메서드를 표준 쿼리 연산자로 알려져 있습니다. 개발자는 쿼리 구문을 사용하는 대신 메서드 구문을 사용하여 직접 호출할 수 있습니다. 자세한 내용은 LINQ의 쿼리 구문 및 메서드 구문을 참조하세요.

쿼리 식 구문

쿼리 식은 선언적 쿼리 구문입니다. 이 구문을 사용하면 개발자가 Transact-SQL과 비슷한 형식의 상위 수준 언어로 쿼리를 작성할 수 있습니다. 쿼리 식 구문을 사용하면 최소한의 코드로 데이터 원본에서 복잡한 필터링, 순서 지정 및 그룹화 작업을 수행할 수 있습니다. 자세한 내용은 기본 쿼리 작업(Visual Basic)을 참조하세요. 쿼리 식 구문을 사용하는 방법을 보여 주는 예제는 다음 항목을 참조하세요.

Method-Based 쿼리 구문

LINQ to Entities 쿼리를 작성하는 또 다른 방법은 메서드 기반 쿼리를 사용하는 것입니다. 메서드 기반 쿼리 구문은 LINQ 연산자 메서드에 대한 직접 메서드 호출 시퀀스로, 람다 식을 매개 변수로 전달합니다. 자세한 내용은 람다 식을 참조하세요. 메서드 기반 구문을 사용하는 방법을 보여 주는 예제는 다음 항목을 참조하세요.

참고하십시오