LINQ(Language Integrated Query)는 C# 언어 내부에 쿼리 기능을 통합하여 컬렉션 데이터를 선언적으로 처리하게 해주는 강력한 도구다.
반복문과 조건문이 뒤섞인 복잡한 코드를 SQL과 유사한 직관적인 코드로 대체할 수 있다.
LINQ의 두 가지 표현 방식
LINQ는 메서드 기반 구문과 쿼리 기반 구문을 모두 지원한다.
using System;
using System.Collections.Generic;
using System.Linq;
public class LinqExample {
public static void main() {
List<int> numbers = new List<int> { 1, 5, 8, 3, 10, 2, 7 };
// 1. 메서드 구문 (Method Syntax) - 람다 활용
var methodResult = numbers
.Where(n => n > 5)
.OrderBy(n => n)
.ToList();
// 2. 쿼리 구문 (Query Syntax) - SQL 유사
var queryResult = from n in numbers
where n > 5
orderby n
select n;
}
}
객체 리스트 처리 예제
복잡한 객체 데이터에서 필요한 정보만 추출하거나 가공할 때 LINQ의 진가가 발휘된다.
public class Product {
public string Name { get; set; }
public int Price { get; set; }
}
List<Product> products = new List<Product> {
new Product { Name = "Laptop", Price = 1200 },
new Product { Name = "Mouse", Price = 50 },
new Product { Name = "Monitor", Price = 300 }
};
// 100달러 이상의 제품 이름만 대문자로 변환하여 추출
var expensiveProducts = products
.Where(p => p.Price >= 100)
.Select(p => p.Name.ToUpper())
.ToList();
주요 특징: 지연 실행 (Deferred Execution)
LINQ 쿼리는 정의되는 시점이 아니라, 실제 데이터에 접근하는 시점(예: foreach 루프나 .ToList() 호출 시)에 실행된다.
이를 통해 불필요한 연산을 줄이고 자원을 효율적으로 관리할 수 있다.
P.S
LINQ는 데이터 처리 로직의 가독성과 생산성을 획기적으로 높여준다.
람다 식과 결합하여 복잡한 필터링, 정렬, 그룹화 작업을 단 몇 줄의 코드로 구현할 수 있는 현대적 C# 개발의 필수 기술인 것 같다.