LINQ 정리노트 (1)
LINQ (Language INterated Qeury)는 Microsoft사에서 개발한 ORM 프레임워크로 데이터베이스 뿐만 아니라 XML이나 심지어는 시스템 자원까지 객체로 표현되는 다양한 자원을 표준화된 프로그래밍 언어로 접근하기 위한 기술이다.
![]() | 거침없이 배우는 LINQ - ![]() Fabrice Marguerie 외 지음, 이준석 옮김/지&선(지앤선) |
먼저 LINQ의 구현에 도움이 되는 C# 3.0부터 지원하기 시작한 문법 내용을 살펴보도록 하겠다.
1. 로컬 변수의 암시적인 형 선언
C#은 엄격한 형(type)을 지원하지만 var 키워드를 통해 로컬 변수를 형선언 없이 사용할 수 있다. 하지만 초기화 식으로 형을 지정해야 한다는 점에서 VB.NET의 variant와는 다르다.
2. 객체와 컬렉션 초기화 함수 (object initializer)
별도의 초기화 코드를 작성하지 않고 초기화 함수를 이용하여 모든 객체를 초기화할 수 있다. 객체와 컬렉션의 초기화가 가능하며, 컬렉션의 경우 System.Collections.IEnumerable만 제대로 구현되어 있으면 다양한 종류의 컬렉션을 초기화할 수 있다.
3. 람다 표현식 (lambda expression)
C# 1.0부터 제공된 대리자는 C# 2.0에서 익명메서드를 통해 대리자를 다룰 수 있도록 개선되었다. C# 3.0에서는 람다 표현식을 사용하여 표현이 더욱 간단해졌다.
4. 확장 메서드 (extension method)
C# 3.0에서 지원되기 시작한 문법으로 IDE의 인텔리전트 기능을 활용할 수 있도록 해주며, 문법적으로 가독성이 높은 코드 작성이 가능하도록 해준다.
.NET Framework Class Library 확장 메서드인 Where(), OrderByDescending(), Select() 등을 연쇄사용(chaining)이나 파이프라인(pipeline) 패턴을 적용하여 문법적으로 편리하게 사용할 수 있도록 지원한다.
5. 익명형 (anonymous type)
정보를 간단히 객체화해 저장할 경우 임시 저장 목적을 위해 특정형을 정의하고 사용하는 번거로움을 줄여준다.
실습을 위해 Northwind 샘플 데이터베이스를 다운받아 압축을 푼다.
MS-SQL이 설치되었들 경우 (MS-SQL 2008 R2 - Express Edition 설치) SQL Server Management Studio를 이용하여 내려받은 Northwind.bak 파일을 복원한다.