[C#] LINQ
Updated:
- C# 언어에 직접 쿼리 기능을 통합하는 방식을 기반으로 하는 기술 집합
- 데이터 원본의 각 유형에 대해 다른 쿼리를 배우는 대신, LINQ를 사용하여 기능 통합
- LINQ to Obejct, SQL, XML 에 대해 일관성있는 쿼리 환경 제공
- SQL Server DB, XML Doc, ADO.NET Data set, IENumarable of IENumarable
를 지원하는 모든 개체 컬렉션에 대해 LINQ 쿼리 작성 가능
Ex) source code
class IntroToLINQ
{
static void Main()
{
// The Three Parts of a LINQ Query:
// 1. Data source.
int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };
// 2. Query creation.
// numQuery is an IEnumerable<int>
var numQuery =
from num in numbers
where (num % 2) == 0
select num;
// 3. Query execution.
foreach (int num in numQuery)
{
Console.Write("{0,1} ", num);
}
}
}
모든 LINQ 쿼리 작업은 세 가지 고유한 작업으로 구성
- 데이터 소스 가져오기
- 쿼리 만들기
- 쿼리 실행

Data Source
- 쿼리 가능 형식은 특별하게 처리할 필요 없음
- 아닐 경우, LINQ 공급자가 그렇게 나타내야함
- LINQ 데이터 소스는 Generic IEnumerable
인터페이스 또는 이 인터페이스에서 상속된 인터페이스를 지원하는 모든 개체 - ArrayList도 가능
Query
- 데이터 소스 또는 소스에서 검색할 정보 지정
- 쿼리 변수에 저장되고 쿼리 식으로 초기화
from,where,select세 가지 절 포함 (SQL 순서와 반대)from: 데이터 소스 지정where: 필터 적용select: 반환되는 요소의 형식 지정- LINQ에 쿼리 변수 자체는 아무작업도 수행하지 않고 데이터를 반환하지 않음
- 나중에 쿼리가 실행될 때 결과를 생성하는 데 필요한 정보 저장 (위의 예제에서는 foreach 동작 시 저장)
Query Execution
- 지연된 실행 : 쿼리 변수는 쿼리 명령을 저장할 뿐, 실행은 결과를 생성해야할 때 동작
- 즉시 실행 강제 적용 : Count, Max, Average, First 등
ref :
LINQ (MS Doc)
Leave a comment