... | ... | @@ -249,7 +249,7 @@ Expression.Compile : 데이터로 담겨 있는 람다 식은 컴파일이 가 |
|
|
#### LINQ (Language INtegrated Query)
|
|
|
|
|
|
C# 목표중에서 하나는 데이터베이스의 접속 및 제어 방식이 언어 자체에 잘 녹아들도록 만드는 것, MS는 사용자가 직접적인 데이터엑세스
|
|
|
서비스를 추가하지 않아도 C#의 구문 자체에서 데이터를 제어하길 원함. LINQ(Language Integrated Query)의 탄생
|
|
|
서비스를 추가하지 않아도 C#의 구문 자체에서 데이터를 제어하길 원함.LINQ(Language Integrated Query)가 탄생함.
|
|
|
|
|
|
언어에 통합된 쿼리표현식(Query Expressions)
|
|
|
함수형 언어 개념을 도입하여 쿼리 형태의 표현식을 제공하여 데이터 추출과 연산에 추상화 단계 굉장히 높힌 표현식.
|
... | ... | @@ -314,8 +314,8 @@ public interface IEnumerable<T> : IEnumerable |
|
|
|
|
|
그렇다면, 굳이 expression tree같은 자료구조로 변환할 필요가 없으니 대략 아래와 같은 규칙이 성립한다.
|
|
|
|
|
|
?코드가 같은 프로그램(또는 프로세스)내에서 실행되는 경우라면 IEnumerable<T>
|
|
|
?쿼리 표현식을 다른 프로그램(또는 프로세스)에서 처리하기 위해서 문자열 형태로 변환해야 한다면 expression tree를 포함하는 IQueryable<T>를 사용
|
|
|
- 코드가 같은 프로그램(또는 프로세스)내에서 실행되는 경우라면 IEnumerable<T>
|
|
|
- 쿼리 표현식을 다른 프로그램(또는 프로세스)에서 처리하기 위해서 문자열 형태로 변환해야 한다면 expression tree를 포함하는 IQueryable<T>를 사용
|
|
|
|
|
|
|
|
|
#### LINQ
|
... | ... | |