Difference between r1.8 and the current
@@ -67,26 +67,26 @@
- 퀴즈! int 타입에 숫자가 짝수인지 알아내시오.
== 질의 연산자 ==
-> 많은 질의 연산자를 조합하면, 거의 대부분의 질의문이 작성이 가능하다.
- 질의 표현식을 사용한다.
-> 두가지 조합하여 만들수도 있다.
-> from절로 시작해서 ,select/group 절로 끝난다.
연속 질의 표현식도 활용할 수 있다.
== 질의 연산자 ==
*LINQ를 통해 질의를 수행할 때, 많은 질의 연산자를 사용할 수 있다.
* LINQ를 통해 질의를 수행할 때, 많은 질의 연산자를 사용할 수 있다.
-> Enumerable 클래스의 IEnumerable<T>의 확장 메서드로써 존재-> 많은 질의 연산자를 조합하면, 거의 대부분의 질의문이 작성이 가능하다.
* LINQ 질의를 구성하는 두가지 방법
* LINQ 질의를 구성하는 두가지 방법
- 유창한 구문(Fluent)을 사용하여 질의를 구성한다.- 질의 표현식을 사용한다.
-> 두가지 조합하여 만들수도 있다.
* 유창한 구문?
* 유창한 구문?
- 질의 연산자를 메서드 체인을 통해 엮어가며 호출하는 구문* 질의 표현식?
* 질의 표현식?
-> SQL 구문과 비슷한 형태로, 컬렉션 질의를 수행할 수 있는 표현식이다.-> from절로 시작해서 ,select/group 절로 끝난다.
* from, where, orderby, select, group, join 설명
* from, where, orderby, select, group, join 설명
* 그 외의 질의 표현식의 표현들
* 그 외의 질의 표현식의 표현들
-> 어떤 컬렉션에는 숫자, 다른 컬렉션에는 모양이 잇을 때, 플레잉 카드 쌍을 만들어 봅시다.연속 질의 표현식도 활용할 수 있다.
@@ -96,17 +96,17 @@
== CodeForces를 LINQ로 풀어보자! ==
== LINQ의 특징 ==
-> 많은 곳에서 지연 연산이 이루어진다. (원한다면 , 지연 연산을 하지 않도록 할 수 있다.)
-> LINQ의 질의 연산자는 쉽게 확장하는 것이 가능하다.
== 고급 LINQ ==
-> PLINQ : 기존 LINQ와 대부분 동일하나, 질의 수행과 결과 취합면에서 병렬성을 지원.
(예시 : 10억까지 소수 찾기)
== LINQ의 특징 ==
* 문제 풀이를 알 수 있는 기존의 방법과 LINQ의 차이점?
* 문제 풀이를 알 수 있는 기존의 방법과 LINQ의 차이점?
-> (ppt참고)-> 많은 곳에서 지연 연산이 이루어진다. (원한다면 , 지연 연산을 하지 않도록 할 수 있다.)
-> LINQ의 질의 연산자는 쉽게 확장하는 것이 가능하다.
* LINQ의 질의 연산자는 두 가지 용도로 쓰인다.
* LINQ의 질의 연산자는 두 가지 용도로 쓰인다.
-> 컬렉션 자장소가 로컬인가, 리모트인가?== 고급 LINQ ==
* LINQ를 확장해볼까요? ~~아니요..~~
* LINQ를 확장해볼까요? ~~아니요..~~
-> PLINQ : 기존 LINQ와 대부분 동일하나, 질의 수행과 결과 취합면에서 병렬성을 지원.
(예시 : 10억까지 소수 찾기)
@@ -121,5 +121,5 @@
-> 대부분의 경우에는 컬렉션과 관련된 모든 문제의 해결 열쇠가 될 가능성이 높습니다.
== 질의 응답 ==
== 질의 응답 ==
* Unity 에서도 LINQ를 사용하나요?
* Unity 에서도 LINQ를 사용하나요?
Answer : 사용 가능하나, 이전에 말했듯이 C# 버전이 낮기 때문에 안 좋은일이 생길수도 있습니다...Zeropage 24기 신형철
1. 개요 ¶
- 이 만화를 아시나요?
C# : You Give up and go to stackoverflow to have Jon Skeet rescue the princess
2. LINQ ¶
-> .Net Framework 3.5에 도입된 기술, C#에서는 3.0 에서 도입.
-> 지역 데이터 컬렉션/리모트 데이터 컬렉션에 대한 질의문 작성이 가능.
단순히 C#에만 존재하는 것이 아니라 .NET에 존재함
- 퀴즈! 숫자 컬렉션에서 짝수만 골라서, 원본과 제곱 수를 컬렉션에 담아봅시다.
- LINQ 질의를 활용 : 일반적인 방법보다 간단한 코드
( 자세한건 발표 ppt 참고)
- LINQ를 활용하면 grouping 에 효과적
- 가독성, 유지보수할 때 좋아짐
- 컬렉션 저장소/종류에 관계없이 코드의 재활용 가능
- 사실, LINQ 질의를 수행하기 위해서는 다른 기능들이 많이 필요합니다.
-> 대부분 C# 3.0에 LINQ와 함꼐 추가
3. LINQ 사용을 위한 준비 ¶
- 람다표현식
조건에 따라 타입, 괄호, 중괄호 생략 가능
- 암시적 형식 추론
- 익명타입
-> new{...} 형식으로 생성, 클래스 맴버를 'Name = Value' 식으로 지정
-> 반드시 var 사용(타입명이 존재하지 않기 때문에)
-> 반드시 var 사용(타입명이 존재하지 않기 때문에)
- 확장 메서드
-> 정적 클래스 내에서 정적 메서드로 정의, 첫 매개변수에 확장 타입 지정.
- 퀴즈! int 타입에 숫자가 짝수인지 알아내시오.
4. 질의 연산자 ¶
- LINQ를 통해 질의를 수행할 때, 많은 질의 연산자를 사용할 수 있다.
-> 많은 질의 연산자를 조합하면, 거의 대부분의 질의문이 작성이 가능하다.
- LINQ 질의를 구성하는 두가지 방법
- 질의 표현식을 사용한다.
-> 두가지 조합하여 만들수도 있다.
- 유창한 구문?
- 질의 표현식?
-> from절로 시작해서 ,select/group 절로 끝난다.
- from, where, orderby, select, group, join 설명
- 그 외의 질의 표현식의 표현들
연속 질의 표현식도 활용할 수 있다.
let 절을 사용하면 임시적으로 추가적인 범위 변수를 도입할 수 있다.
6. LINQ의 특징 ¶
- 문제 풀이를 알 수 있는 기존의 방법과 LINQ의 차이점?
-> 많은 곳에서 지연 연산이 이루어진다. (원한다면 , 지연 연산을 하지 않도록 할 수 있다.)
-> LINQ의 질의 연산자는 쉽게 확장하는 것이 가능하다.
- LINQ의 질의 연산자는 두 가지 용도로 쓰인다.
7. 고급 LINQ ¶
- LINQ를 확장해볼까요?
아니요..
(예시 : 10억까지 소수 찾기)
-> Rx : 기존의 관찰자 패턴을 통한 이벤트 주도 패러다임을 LINQ와 함께 확장시킨것.
이벤트 순차열에 대한 질의와 함께, 동시성에 대해서도 지원
기존의 데이터 모형(Pull)이 아닌 푸쉬모델(Push) 사용
기존의 데이터 모형(Pull)이 아닌 푸쉬모델(Push) 사용