Upload
gigi
View
63
Download
1
Embed Size (px)
DESCRIPTION
C# Loves LINQ Chapter 1. DEVPIA C# Forum Nam Jung Hyun. Agenda. Part 1: LINQ 이해하기 Part 2: Lambda 표현 식과 확장 메서드 Part 3: LINQ 확장 메서드 활용 Conclusion. Part 1: Understanding LINQ. 이 장에서는 LINQ 의 기본 기능을 살펴봅니다 . LINQ 에 대하여. Language Integrated Query 의 줄임말 .NET Framework 3.5 부터 공식적으로 지원 - PowerPoint PPT Presentation
Citation preview
C# Loves LINQ Chapter 1DEVPIA C# Forum
Nam Jung Hyun
Agenda Part 1: LINQ 이해하기 Part 2: Lambda 표현 식과 확장 메서드 Part 3: LINQ 확장 메서드 활용 Conclusion
Part 1: Understanding LINQ이 장에서는 LINQ 의 기본 기능을 살펴봅니다 .
LINQ 에 대하여 Language Integrated Query 의 줄임말 .NET Framework 3.5 부터 공식적으로 지원 C# 3.0, Visual Basic .NET 9.0 과 호환 Third party IDE 의 경우 RemObjects Pas-
cal v2.0 (Joyride) 이후 버전부터 호환
왜 LINQ
인가?Before LINQ (SQL)
After LINQ (SQL)
LINQ 이력
시작 •Microsoft Research의 C ω (OMEGA) 언어 Project에서 컨셉이 처음 제시됨
현재 •2007년 11월 발표된 .NET 3.5에 포함 •Silverlight 2.0 (PC/Intel MAC)에 포함
미래 •.NET 4.0에서 더욱 강력한 성능 추구 •다양한 LINQ Provider 개발 활성화
LINQ 를 사용할 수 있는 환경Windows• Windows XP, Vista, 7
• Windows Server 2003, 2008, 2008 R2
• Visual Studio 2008 (Express 포함 ) SP1 이상
LINQ 를 사용할 수 있는 환경Windows (Silverlight)• Silverlight 2 이상• Expression Blend 2 SP1 이상
Mac OS X Intel (Silverlight)• Mac OS X 10.4 Tiger 이상• 사파리 웹 브라우저• Silverlight 2 이상
LINQ 를 사용할 수 있는 환경Linux• 오픈 수세 / 수세 Linux 추천• Mono 2.4 이상• MonoDevelop 2.0 이상• Mono 웹 사이트에서 가상
PC 패키지를 이용할 수 있음• Moonlight 2.0 베타
LINQ 의 특징
• 컴파일러가 직접 해석 /번역하는 질의 구문처리 방식
• 기존 프로그래밍 언어와 잘 연결됨친숙함
• LINQ Provider 직접 개발 가능
• 성능 개선의 여지가 많음확장 가능
LINQ 와 SQL 의 차이점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 外의 데이터 소스로 확장 가능
LINQ 와 Pro*C 의 차이점Pro*C프로그래밍 언어 C/C++ 문법을 전제로 사용처리 방식 Pro*C 전 처리기 처리 후 최종 소스를 작성 (LEX/YACC 와 같은 방식 )대상 데이터 소스 Oracle DBMS 만을 고려하고 최적화한 것이 특징기능성 CREATE, READ, UPDATE, DELETE
LINQ프로그래밍 언어 LINQ 를 지원하는 모든 언어 (C#, VB.NET, Delphi Prism, …)처리 방식 정규 문법의 일부로 통일되어 AS-P.NET, CODEDOM 에서도 지원됨대상 데이터 소스 DBMS 외의 다양한 데이터 소스를 선택하거나 추가 개발 가능기능성 READ (Provider 에 따라 Delta Create/Update/Delete 를 지원 )
LINQ 의 종류LINQ to Object
LINQ to SQL
LINQ to ADO.NET Data Entities
LINQ 의 종류LINQ to Data Set
LINQ to XML
And Your Exclusive LINQ Providers
LINQ 의 기본 구조SQL
SE-LECT
FROM
WHERE
LINQFROM
WHERE
SE-LECT
LINQ 의 기본 구조
FROM Clause:FROM [A] IN [B]
LINQ 의 기본 구조
LET Clause:LET [C] = [D]
LINQ 의 기본 구조
WHERE Clause:WHERE [E]
LINQ 의 기본 구조
ORDERBY Clause: ORDERBY [F] [G]
LINQ 의 기본 구조
SELECT Clause:SELECT [H]
Let’s try LINQ to OBJECT
Step 1 •사원 정보를 포함하는 컬렉션 작성
Step 2 •기본 구문으로 자료를 선택하여 결과를 출력하기
Step 3 •이름을 오름차순으로 정렬하여 결과를 출력 하기
Step 4
•성이 “김”씨인 사람들의 급여를 내림차순으로 정렬하여 결과를 출력하기
Part 2: Understanding Lambda Ex-pression and Extension Methods이 장에서는 Lambda Expres-sion 과 Extension Method 에 대하여 살펴보기로 합니다 .
버전 별 대리자의 역사
C# 1.0• 일반적인 대리자
C# 2.0
• 무명 메서드• 무명 대리자
C# 3.0
• 식 람다• 문 람다
람다의 형식Format #1 ( 식 람다 ):매개 변수 => 스칼라 식 ;
Format #2 ( 문 람다 ):매개 변수 => { 변수 명 = 대입 식 ; … };
람다의 예제Comparison<T> 대리자 :var x = (x, y) => x.CompareTo(y);
Action<T> 대리자 :var y = y => Console.WriteLine((y * y).ToString());
Func<T1, T2, Tresult> 대리자 :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 참조에 대해서도 호출이 가능
확장 메서드의 사용법 Extension Method 의 선언과 참조는 별도로 구분된다 . Extension Method 가 정의된 Static Class가 속한 네임스페이스를 코드 상에서 참조 using System.Linq;
확장 메서드의 선언public static class MyExtensions{
public static string AsString(this int i){
return i.ToString();}
}// static 키워드와 this 키워드에 주목 !
확장 메서드의 선언 Extension Method 는 정적 클래스 위에서만 선언이 가능하다 . Extension Method 는 정적 메서드 형태여야만 한다 . 첫 번째 인자에 확장할 대상 형식에 해당되는 변수를 지정하고 this 키워드를 붙인다 .
Part 3: Enumerable Type Extension Method이 장에서는 Enumerable Type에 대하여 구현된 Extension Method 의 활용법을 살펴봅니다 .
나열 가능한 형식이란 ?
IEnumerable GetEnumera-tor
For Each @LINQ?
판정용 스칼라 함수All Any
Contains SequenceEqual
통계용 스칼라 함수
Count Max Min
Sum Average
추출용 스칼라 함수
Aggregate ElementAt First
Last Single
데이터 필터 함수
Distinct Except Inter-sect
Skip Take Where
데이터 변형 함수Cast Concat
Default-IfEmpty Select
데이터 변형 함수
SelectMany GroupBy
GroupJoin Join
데이터 변형 함수
Reverse OrderBy ToArray
ToDic-tionary ToList ToLookup
실전 예제 살펴보기 간단한 웹 기반 메모 패드 예제 사용하는 데이터베이스 : Oracle 10g Ex-
press Edition 사용하는 프레임워크 : ASP.NET MVC J-Query 를 이용한 클라이언트 UI
Conclusion Chapter 1 에서는 LINQ 의 기본 사양과 관련된 C# 3.0 의 기본 문법을 다루었습니다 . Chapter 2 에서는 LINQ to SQL, LINQ to
XML 에 대해서 살펴보기로 합니다 . 감사합니다 .
Thank You!