C샵 LINQ 기초 사용

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# 개발의 필수 기술인 것 같다.

Author avatar

웨이호프

WordPress creator and blogger.

View all posts