14. Lamda

- 람다식으로 만드는 익명 메소드, Anonymous Function(무명 함수)

- 함수를 변수에 대입

14.1. 람다식 선언

매개변수_목록 => (식)

 

14.2. Statement Lambda

(매개변수_목록) = > {

문장1;

문장2;

문장3;

...

}

14.3. Func, Action

- delegate 대리자 선언부 생략 방법

- func 대리자, 결과를 반환하는 메소드 참조

- action 대리자, 결과를 반환하지 않는 메소드를 참조

14.4. Expression Tree

- System.Linq.Expressions

- Expression 클래스와 파생 클래스들

- 각 노드 타입 상관 없이 Expression 형식 참조 선언 가능

- expression tree = statement(구문, 구현부) 를 트리로 표현한것

14.5. Expression-Bodied Member

- 메소드, 속성(인덱서), 생성자, 종료자를 statement로만 구현

- 연산자 { }를 =>로 변경

15. LINQ

- LINQ 컬렉션을 편리하게 다루기 위한 목적으로 만들어진 질의(Query) 언어

- LINQ는 DBMS의 SQL(Structured Query Language)을 본떠 프로그래밍 언어에 통합

- LINQ는 다른 .NET 언어에서는 사용할 수 없다. C#, VB 만 사용 가능

 

 

15.1. from, where, orderby, select

LINQ: Language INtegrated Query

 

from

- 범위 변수

- 쿼리 변수

- IEnumerable<T> 상속받은 배열, 컬랙션 객체

- foreach (int x in arr) x 는 변수, from x in arr 의 x 는 변수가 아니다.

 

where

- 조건

 

orderby

- 정렬

 

select

- 반환형: IEnumerable<T>

- eg. select profile ( = IEnumerable<Profile> )

- eg. select profile.name ( = IEnumerable<string> )

- eg. select new { Name = profile. Name, InchHeight = profile.Height * 0.393 };

 

15.2. 중첩

 

15.3. group by

반환형: IGrouping<T>

 

 

 

15.4. inner Join

- 두 데이터 원본에서 특정 필드를 비교해 일치하는 데이터 반환

- 기준: 첫번째 원본 데이터

- 반환시, 원본에 존재하지 않는 데이터 제외

 

15.5. outer join

- 반환시, 원본에 존재하지 않는 데이터 포함

- 일치하는 데이터가 존재하지 않는다면, 빈 값으로 채움

- join 절 수행 후, 임시 컬렉션에 저장하고, DefaultIfEmpty 연산을 통해 비어 있는 조인 결과에 빈 값을 채움

 

 

 

15.6. 비교

15.7. 내부 동작 방식

LINQ 쿼리식을 분석해서 일반적인 메소드 호출 코드로 만듦

 

 

15.8. 예제

 

ubiquitous4g