c# loves linq chapter 1

46

Upload: gigi

Post on 22-Feb-2016

63 views

Category:

Documents


1 download

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

TRANSCRIPT

Page 1: C# Loves LINQ Chapter 1
Page 2: C# Loves LINQ Chapter 1

C# Loves LINQ Chapter 1DEVPIA C# Forum

Nam Jung Hyun

Page 3: C# Loves LINQ Chapter 1

Agenda Part 1: LINQ 이해하기 Part 2: Lambda 표현 식과 확장 메서드 Part 3: LINQ 확장 메서드 활용 Conclusion

Page 4: C# Loves LINQ Chapter 1

Part 1: Understanding LINQ이 장에서는 LINQ 의 기본 기능을 살펴봅니다 .

Page 5: C# Loves LINQ Chapter 1

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) 이후 버전부터 호환

Page 6: C# Loves LINQ Chapter 1

왜 LINQ

인가?Before LINQ (SQL)

After LINQ (SQL)

Page 7: C# Loves LINQ Chapter 1

LINQ 이력

시작 •Microsoft Research의 C ω (OMEGA) 언어 Project에서 컨셉이 처음 제시됨

현재 •2007년 11월 발표된 .NET 3.5에 포함 •Silverlight 2.0 (PC/Intel MAC)에 포함

미래 •.NET 4.0에서 더욱 강력한 성능 추구 •다양한 LINQ Provider 개발 활성화

Page 8: C# Loves LINQ Chapter 1

LINQ 를 사용할 수 있는 환경Windows• Windows XP, Vista, 7

• Windows Server 2003, 2008, 2008 R2

• Visual Studio 2008 (Express 포함 ) SP1 이상

Page 9: C# Loves LINQ Chapter 1

LINQ 를 사용할 수 있는 환경Windows (Silverlight)• Silverlight 2 이상• Expression Blend 2 SP1 이상

Mac OS X Intel (Silverlight)• Mac OS X 10.4 Tiger 이상• 사파리 웹 브라우저• Silverlight 2 이상

Page 10: C# Loves LINQ Chapter 1

LINQ 를 사용할 수 있는 환경Linux• 오픈 수세 / 수세 Linux 추천• Mono 2.4 이상• MonoDevelop 2.0 이상• Mono 웹 사이트에서 가상

PC 패키지를 이용할 수 있음• Moonlight 2.0 베타

Page 11: C# Loves LINQ Chapter 1

LINQ 의 특징

• 컴파일러가 직접 해석 /번역하는 질의 구문처리 방식

• 기존 프로그래밍 언어와 잘 연결됨친숙함

• LINQ Provider 직접 개발 가능

• 성능 개선의 여지가 많음확장 가능

Page 12: C# Loves LINQ Chapter 1

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 外의 데이터 소스로 확장 가능

Page 13: C# Loves LINQ Chapter 1

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 를 지원 )

Page 14: C# Loves LINQ Chapter 1

LINQ 의 종류LINQ to Object

LINQ to SQL

LINQ to ADO.NET Data Entities

Page 15: C# Loves LINQ Chapter 1

LINQ 의 종류LINQ to Data Set

LINQ to XML

And Your Exclusive LINQ Providers

Page 16: C# Loves LINQ Chapter 1

LINQ 의 기본 구조SQL

SE-LECT

FROM

WHERE

LINQFROM

WHERE

SE-LECT

Page 17: C# Loves LINQ Chapter 1

LINQ 의 기본 구조

FROM Clause:FROM [A] IN [B]

Page 18: C# Loves LINQ Chapter 1

LINQ 의 기본 구조

LET Clause:LET [C] = [D]

Page 19: C# Loves LINQ Chapter 1

LINQ 의 기본 구조

WHERE Clause:WHERE [E]

Page 20: C# Loves LINQ Chapter 1

LINQ 의 기본 구조

ORDERBY Clause: ORDERBY [F] [G]

Page 21: C# Loves LINQ Chapter 1

LINQ 의 기본 구조

SELECT Clause:SELECT [H]

Page 22: C# Loves LINQ Chapter 1

Let’s try LINQ to OBJECT

Step 1 •사원 정보를 포함하는 컬렉션 작성

Step 2 •기본 구문으로 자료를 선택하여 결과를 출력하기

Step 3 •이름을 오름차순으로 정렬하여 결과를 출력 하기

Step 4

•성이 “김”씨인 사람들의 급여를 내림차순으로 정렬하여 결과를 출력하기

Page 23: C# Loves LINQ Chapter 1

Part 2: Understanding Lambda Ex-pression and Extension Methods이 장에서는 Lambda Expres-sion 과 Extension Method 에 대하여 살펴보기로 합니다 .

Page 24: C# Loves LINQ Chapter 1

버전 별 대리자의 역사

C# 1.0• 일반적인 대리자

C# 2.0

• 무명 메서드• 무명 대리자

C# 3.0

• 식 람다• 문 람다

Page 25: C# Loves LINQ Chapter 1

람다의 형식Format #1 ( 식 람다 ):매개 변수 => 스칼라 식 ;

Format #2 ( 문 람다 ):매개 변수 => { 변수 명 = 대입 식 ; … };

Page 26: C# Loves LINQ Chapter 1

람다의 예제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); };

Page 27: C# Loves LINQ Chapter 1

람다의 예제직접 형식 지정 가능 #1:var = (string x, string y) => x.-CompareTo(y);

직접 형식 지정 가능 #2:var y = (int y) => y / y;

Page 28: C# Loves LINQ Chapter 1

확장 메서드에 대하여기존의 정적 메서드의 특성

정적 메서드가 작용할 대상 형식의 설정

Page 29: C# Loves LINQ Chapter 1

확장 메서드에 대하여외관과는 달리 실제 형식에 속하는 멤버가 아님

정적 메서드로서의 성격을 그대로 유지

Page 30: C# Loves LINQ Chapter 1

확장 메서드에 대하여NULL 참조에 대한 멤버 메서드의 호출이 제한됨

정적 메서드이기 때문에 NULL 참조에 대해서도 호출이 가능

Page 31: C# Loves LINQ Chapter 1

확장 메서드의 사용법 Extension Method 의 선언과 참조는 별도로 구분된다 . Extension Method 가 정의된 Static Class가 속한 네임스페이스를 코드 상에서 참조 using System.Linq;

Page 32: C# Loves LINQ Chapter 1

확장 메서드의 선언public static class MyExtensions{

public static string AsString(this int i){

return i.ToString();}

}// static 키워드와 this 키워드에 주목 !

Page 33: C# Loves LINQ Chapter 1

확장 메서드의 선언 Extension Method 는 정적 클래스 위에서만 선언이 가능하다 . Extension Method 는 정적 메서드 형태여야만 한다 . 첫 번째 인자에 확장할 대상 형식에 해당되는 변수를 지정하고 this 키워드를 붙인다 .

Page 34: C# Loves LINQ Chapter 1

Part 3: Enumerable Type Extension Method이 장에서는 Enumerable Type에 대하여 구현된 Extension Method 의 활용법을 살펴봅니다 .

Page 35: C# Loves LINQ Chapter 1

나열 가능한 형식이란 ?

IEnumerable GetEnumera-tor

For Each @LINQ?

Page 36: C# Loves LINQ Chapter 1

판정용 스칼라 함수All Any

Contains SequenceEqual

Page 37: C# Loves LINQ Chapter 1

통계용 스칼라 함수

Count Max Min

Sum Average

Page 38: C# Loves LINQ Chapter 1

추출용 스칼라 함수

Aggregate ElementAt First

Last Single

Page 39: C# Loves LINQ Chapter 1

데이터 필터 함수

Distinct Except Inter-sect

Skip Take Where

Page 40: C# Loves LINQ Chapter 1

데이터 변형 함수Cast Concat

Default-IfEmpty Select

Page 41: C# Loves LINQ Chapter 1

데이터 변형 함수

SelectMany GroupBy

GroupJoin Join

Page 42: C# Loves LINQ Chapter 1

데이터 변형 함수

Reverse OrderBy ToArray

ToDic-tionary ToList ToLookup

Page 43: C# Loves LINQ Chapter 1

실전 예제 살펴보기 간단한 웹 기반 메모 패드 예제 사용하는 데이터베이스 : Oracle 10g Ex-

press Edition 사용하는 프레임워크 : ASP.NET MVC J-Query 를 이용한 클라이언트 UI

Page 44: C# Loves LINQ Chapter 1

Conclusion Chapter 1 에서는 LINQ 의 기본 사양과 관련된 C# 3.0 의 기본 문법을 다루었습니다 . Chapter 2 에서는 LINQ to SQL, LINQ to

XML 에 대해서 살펴보기로 합니다 . 감사합니다 .

Page 45: C# Loves LINQ Chapter 1

Thank You!

Page 46: C# Loves LINQ Chapter 1