c# loves linq chapter 1

Post on 22-Feb-2016

63 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

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

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!

top related