PPart 1: LINQ 이해하기 PPart 2: Lambda 표현 식과 확장 메서드 PPart 3: LINQ 확장 메서드 활용 CConclusion
이 장에서는 LINQ 의 기본 기능 을 살펴봅니다.
LLanguage Integrated Query 의 줄임말 ..NET Framework 3.5 부터 공식적으로 지원 CC# 3.0, Visual Basic.NET 9.0 과 호환 TThird party IDE 의 경우 RemObjects Pascal v2.0 (Joyride) 이후 버전부터 호환
B e f o r e L I N Q ( S Q L ) A f t e r L I N Q ( S Q L )
SQL 문법 SQL 표준 문법을 기초로 T-SQL, PL/SQL 등의 확장이 존재 기능성 CREATE, READ, UPDATE, DELETE 실행 영역 응용프로그램과는 분리된 계층에서 실행 확장 가능성 DBMS 조회 이외의 기능으로는 확 장에 제한이 있음 LINQ 문법 프로그래밍 언어별 (C#, VB.NET, Delphi Prism 등 ) 로 확장 지원 기능성 READ (Provider 에 따라 Delta Create/Update/Delete 를 지원 ) 실행 영역 컴파일러가 해석을 하고 대응되는 코드를 MSIL 로 작성 확장 가능성 Custom LINQ Provider 작성으로 DBMS 外의 데이터 소스로 확장 가능
Pro*C 프로그래밍 언어 C/C++ 문법을 전제로 사용 처리 방식 Pro*C 전 처리기 처리 후 최종 소스 를 작성 (LEX/YACC 와 같은 방식 ) 대상 데이터 소스 Oracle DBMS 만을 고려하고 최적 화한 것이 특징 기능성 CREATE, READ, UPDATE, DELETE LINQ 프로그래밍 언어 LINQ 를 지원하는 모든 언어 (C#, VB.NET, Delphi Prism, …) 처리 방식 정규 문법의 일부로 통일되어 ASP.NET, CODEDOM 에서도 지원됨 대상 데이터 소스 DBMS 외의 다양한 데이터 소스를 선택하거나 추가 개발 가능 기능성 READ (Provider 에 따라 Delta Create/Update/Delete 를 지원 )
LINQ to Object LINQ to SQL LINQ to ADO.NET Data Entities
LINQ to Data Set LINQ to XML And Your Exclusive LINQ Providers
FROM Clause: FROM [A] IN [B]
LET Clause: LET [C] = [D]
WHERE Clause: WHERE [E]
ORDERBY Clause: ORDERBY [F] [G]
SELECT Clause: SELECT [H]
Step 1 사원 정보를 포함하는 컬렉션 작성 Step 2 기본 구문으로 자료를 선택하여 결과를 출력하기 Step 3 이름을 오름차순으로 정렬하여 결과를 출력 하기 Step 4 성이 “ 김 ” 씨인 사람들의 급여를 내림차순으로 정렬하여 결과를 출력하기
이 장에서는 Lambda Expression 과 Extension Method 에 대하여 살펴보기로 합니다.
Format #1 ( 식 람다 ): 매개 변수 => 스칼라 식 ; Format #2 ( 문 람다 ): 매개 변수 => { 변수 명 = 대입 식 ; … };
Comparison 대리자 : var x = (x, y) => x.CompareTo(y); Action 대리자 : var y = y => Console.WriteLine((y * y).ToString()); Func 대리자 : var z = (x, y) => { int z = (x + y) * (x – y); MyFunc(z); };
직접 형식 지정 가능 #1: var = (string x, string y) => x.CompareTo( y); 직접 형식 지정 가능 #2: var y = (int y) => y / y;
기존의 정적 메서드 의 특성 정적 메서드가 작용 할 대상 형식의 설정
외관과는 달리 실 제 형식에 속하는 멤버가 아님 정적 메서드로서 의 성격을 그대로 유지
NULL 참조에 대한 멤 버 메서드의 호출이 제한됨 정적 메서드이기 때 문에 NULL 참조에 대 해서도 호출이 가능
EExtension Method 의 선언과 참조는 별도로 구분된다. EExtension Method 가 정의된 Static Class 가 속한 네임스페이스를 코드 상에서 참조 uusing System.Linq;
public static class MyExtensions { public static string AsString(this int i) { return i.ToString(); } } // static 키워드와 this 키워드에 주목 !
EExtension Method 는 정적 클래스 위에서만 선언이 가능하다. EExtension Method 는 정적 메서드 형태여야 만 한다. 첫첫 번째 인자에 확장할 대상 형식에 해당되는 변수를 지정하고 this 키워드를 붙인다.
이 장에서는 Enumerable Type 에 대하여 구현된 Extension Method 의 활용법을 살펴봅니 다.
IEnumerableGetEnumerator For
AllAny ContainsSequenceEqual
CountMaxMin SumAverage
AggregateElementAtFirst LastSingle
DistinctExceptIntersect SkipTakeWhere
CastConcat DefaultIfEmptySelect
SelectManyGroupBy GroupJoinJoin
ReverseOrderByToArray ToDictionaryToListToLookup
간간단한 웹 기반 메모 패드 예제 사사용하는 데이터베이스 : Oracle 10g Express Edition 사사용하는 프레임워크 : ASP.NET MVC JJ-Query 를 이용한 클라이언트 UI
CChapter 1 에서는 LINQ 의 기본 사양과 관련 된 C# 3.0 의 기본 문법을 다루었습니다. CChapter 2 에서는 LINQ to SQL, LINQ to XML 에 대해서 살펴보기로 합니다. 감감사합니다.