서론
데이터 처리는 현대 프로그래밍에서 가장 중요한 작업 중 하나입니다. 매일 수많은 개발자들이 데이터를 필터링하고, 정렬하고, 변환하는 코드를 작성합니다. C#은 이러한 데이터 처리 작업을 훨씬 효율적으로 수행할 수 있게 해주는 강력한 도구를 제공하는데, 바로 LINQ(Language INtegrated Query)입니다.
본론
1. LINQ의 이해
1.1 LINQ란?
LINQ는 C# 언어에 통합된 데이터 질의 기능입니다. 데이터베이스의 SQL과 유사하지만, 훨씬 더 보편적인 용도로 사용할 수 있습니다. LINQ를 사용하면 컬렉션, XML, 데이터베이스 등 다양한 데이터 소스에 대해 일관된 방식으로 질의를 수행할 수 있습니다.
1.2 LINQ 쿼리의 기본 구조
LINQ 쿼리는 다음과 같은 주요 요소들로 구성됩니다:
// 기본적인 LINQ 쿼리 구조
var query = from item in dataSource // 데이터 소스 지정
where item.Value > 10 // 필터링 조건
orderby item.Name // 정렬 기준
select item; // 결과 선택
C#
복사
각 요소는 SQL의 구문과 유사하지만, C# 코드 안에서 컴파일 시점의 타입 검사를 받을 수 있다는 장점이 있습니다.
2. LINQ의 주요 연산자
2.1 from 절
from은 모든 LINQ 쿼리의 시작점입니다. 이 연산자는 두 가지 중요한 요소를 지정합니다:
•
데이터 원본 (IEnumerable<T> 인터페이스를 구현한 컬렉션)
•
범위 변수 (각 요소를 참조하는 변수)
// IEnumerable<T> 컬렉션에서 데이터 추출
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var query = from num in numbers // num이 범위 변수
select num;
C#
복사
주요 포인트:
•
데이터 원본은 반드시 IEnumerable<T> 인터페이스를 구현해야 합니다.
•
범위 변수는 실제 데이터를 담지 않고, 쿼리 실행 계획을 표현하는 역할을 합니다.
2.2 where 절
where는 조건에 맞는 데이터만 필터링하는 연산자입니다. 복잡한 조건식도 사용할 수 있습니다.
// 짝수만 필터링하는 예제
var evenNumbers = from num in numbers
where num % 2 == 0
select num;
C#
복사
where 절은 데이터 필터링을 담당합니다. 주요 특징은 다음과 같습니다:
•
조건식을 통한 데이터 필터링
•
복수의 조건을 && 또는 || 연산자로 결합 가능
•
성능상 가능한 한 일찍 필터링하는 것이 좋음
2.3 orderby 절
orderby는 데이터를 정렬하는 연산자입니다. 기본적으로 오름차순이며, descending 키워드로 내림차순 정렬이 가능합니다.
// 복수 기준 정렬 예제
var sortedItems = from item in items
orderby item.Category ascending,
item.Price descending
select item;
C#
복사
orderby 절의 주요 기능:
•
기본값은 ascending (오름차순)
•
descending 키워드로 내림차순 정렬
•
복수의 정렬 기준 지정 가능 (콤마로 구분)
2.4 select 절
select는 최종 결과를 추출하는 연산자입니다. 원본 데이터를 그대로 가져오거나, 새로운 형태로 변환할 수 있습니다.
// 무명 형식을 사용한 데이터 변환 예제
var transformed = from item in items
select new {
Name = item.Name.ToUpper(),
Price = item.Price * 1.1
};
C#
복사
select 절은 쿼리의 최종 결과를 결정합니다:
•
반환할 데이터의 형태 지정
•
익명 형식을 통한 새로운 데이터 구조 생성 가능
•
IEnumerable<T> 형태로 결과 반환
참고 자료
•
박상현, "이것이 C#이다", 한빛미디어, 2023