글 작성자: 써니루루

http://www.microsoft.com/Korea/MSDN/library/bb308959.aspx


LINQ: .NET 통합 언어 쿼리

Don Box, Anders Hejlsberg

January 2007

적용 대상 :
Visual Studio 2008
.Net Framework 3.5

개요 : 자료에서는 .NET Framework 추가된 범용 쿼리 기능에 대해 설명합니다. 범용 쿼리 기능은 관계형 데이터, XML 데이터 뿐만이 아닌 모든 정보 소스에 적용됩니다. 기능을 .NET LINQ (Language Integrated Query : 통합 언어 쿼리)라고 부릅니다.

목차

.NET LINQ
표준 쿼리 연산자 개요
LINQ 프로젝트를 지원 하는 언어 기능
표준 쿼리 연산자
쿼리 구문
LINQ to SQL: SQL 통합
LINQ to XML: XML 통합
요약

.NET LINQ

개체 지향 (OO) 프로그래밍 기술 진화는 20 년의 세월을 거쳐 이제 안정화 단계에 이르렀습니다. 프로그래머도 클래스, 개체, 메서드와 같은 기능을 다룰 있게 되었습니다.이러한 기술 현상이나 차세대 기술에 관심을 가져보면, OO 기술을 사용하여 네이티브에 정의되지 않은 정보 접근이나 통합의 복잡함을 경감하는 것이 앞으로의 과제입니다. OO 기술에 대응하지 않는 정보 중에서 가장 일반적인 정보 소스가 관계형 데이터베이스와 XML 두가지입니다.

.NET Framework 에서는 프로그램 언어나 런타임에 관계형 고유의 기능이나 XML 고유의 기능을 추가하는 것이 아니라, LINQ 프로젝트라는 범용성 높은 접근 방식을 채용했습니다..NET Framework 범용 쿼리 기능이 추가되어 관계형 데이터나 XML 데이터 뿐만 아니라, 모든 정보 소스에 쿼리 기능이 적용됩니다. 기능을 .NET LINQ (Language Integrated Query : 통합 언어 쿼리)라고 부릅니다.

"통합 언어 쿼리 (LINQ : Language Integrated Query)" 라는 용어가 보여주듯이, 개발자가 주로 사용하는 프로그램 언어 (Visual C#, Visual Basic ) 쿼리 기능이 통합됩니다. LINQ 사용하여 지금까지는 프로그래밍 코드로 밖에 이용할 없었던, 리치 메타데이터, 컴파일시 구문 체크, 정적인 형식 지정, IntelliSense 등의 장점을 "쿼리 " 에서 이용할 있게 됩니다., LINQ 라고 하는 선언형의 단일 범용 쿼리 기능에 의해, 외부 소스로부터의 정보 뿐만이 아니라, 메모리내의 모든 정보에 대해 쿼리 기능을 이용할 수도 있습니다.

.NET LINQ 에서는 연속된 범용 "표준 쿼리 연산자" 정의됩니다. 표준 쿼리 연산자에 의해,.NET 기반의 프로그램 언어내에서 선언형의 직접적 수법을 사용하고, 통과 (일괄) 연산, 필터 연산 프로젝션 연산을 표현할 있습니다.표준 쿼리 연산자에서는 IEnumerable<T> 기반의 모든 정보 소스에 쿼리를 적용할 있습니다.  LINQ사용으로 타사에서 제공되는 표준 쿼리 연산자세트가 증가합니다.이러한 표준 쿼리 연산자 안에는 대상 도메인이나 대상 기술에 대응하는 새로운 도메인 고유의 연산자도 포함됩니다.한층 중요한 점은 타사가 표준 쿼리 연산자를 독자적인 구현에 자유롭게 옮겨놓을 있는 것입니다.타사 독자적인 구현에서는 리모트 평가 쿼리의 번역, 최적화 등의 서비스를 추가할 있습니다. 이러한 구현에서는 "LINQ 패턴" 표기법으로 준거하며, 표준 쿼리 연산자와 같은 통합 언어와 도구 지원을 이용할 있습니다.

이러한 쿼리 아키텍처의 확장성은 LINQ 프로젝트 자체에서도 사용되고 XML데이터와 SQL 데이터의 양쪽 모두로 기능하는 구현을 제공합니다. XML 대한 쿼리 연산자 (LINQ to XML)에서는 효율적으로 사용하기 쉬운, 인메모리 XML 기능을 사용하고, 호스트 프로그램 언어에 XPath/XQuery 기능을 제공합니다. 관계형 데이터에 대한 쿼리 연산자 (LINQ to SQL) 공용 언어 런타임 (CLR) 형식 시스템에 통합된 SQL 기반의 스키마 정의를 기본으로 구축됩니다.이러한 통합에 의해, 관계형 모델의 표현력이나, 기본으로 되는 스토어에서 직접 행해지는 쿼리 평가의 성능을 유지하면서, 관계형 데이터에 엄밀한 형식 지정이 필요합니다.