c#

C# LINQ 활용법 – 컬렉션 처리와 데이터 쿼리

개발에대해 2025. 9. 21. 21:56
반응형

 

C# LINQ 활용법 – 컬렉션 처리와 데이터 쿼리

C#에서 LINQ(Language Integrated Query)는 컬렉션 데이터 조회, 필터링, 정렬, 그룹화 등을 간결하게 처리할 수 있는 강력한 도구입니다. 데이터베이스, 배열, 리스트 등 다양한 소스에 동일한 문법을 적용할 수 있어 생산성을 높여줍니다.

 

1. LINQ 기본 구조

LINQ는 크게 두 가지 방식으로 사용됩니다. 쿼리 구문(Query Syntax)메서드 구문(Method Syntax)입니다.

// 데이터 소스
int[] numbers = {1,2,3,4,5,6,7,8,9,10};

// 쿼리 구문
var evenNumbers = from n in numbers
                  where n % 2 == 0
                  select n;

// 메서드 구문
var evenNumbers2 = numbers.Where(n => n % 2 == 0).ToList();
  

 

두 구문 모두 같은 결과를 반환하지만, 메서드 구문은 람다식 기반으로 다양한 메서드 체인 사용이 가능해 실무에서 많이 활용됩니다.

 

2. LINQ로 컬렉션 필터링

LINQ를 활용하면 조건에 맞는 데이터를 쉽게 추출할 수 있습니다.

List<string> fruits = new List<string> { "Apple", "Banana", "Orange", "Grapes" };

// "A"로 시작하는 과일 필터링
var aFruits = fruits.Where(f => f.StartsWith("A")).ToList();
  

 

3. 정렬과 그룹화

 

LINQ는 데이터 정렬과 그룹화도 쉽게 처리할 수 있습니다.

// 숫자 정렬
var sorted = numbers.OrderByDescending(n => n).ToList();

// 그룹화 예제
var grouped = fruits.GroupBy(f => f[0]); // 첫 글자를 기준으로 그룹화
  
 

4. LINQ와 객체 컬렉션

LINQ는 클래스 객체 리스트에서도 동일하게 적용 가능합니다.

class Person {
    public string Name { get; set; }
    public int Age { get; set; }
}

List<Person> people = new List<Person> {
    new Person { Name = "Alice", Age = 25 },
    new Person { Name = "Bob", Age = 30 },
    new Person { Name = "Charlie", Age = 22 }
};

// 25세 이상인 사람 필터링
var adults = people.Where(p => p.Age >= 25)
                   .OrderBy(p => p.Name)
                   .ToList();
  

 

5. LINQ 실무 활용 팁

  • Lazy Evaluation : LINQ는 실제 사용 시점까지 연산을 지연시킵니다. 필요 시 ToList()로 즉시 실행
  • Null 안전 처리 : 컬렉션이 null일 수 있는 경우 ?.?? Enumerable.Empty<T>() 활용
  • 메서드 체인 활용 : Where → OrderBy → Select 등 체인으로 가독성 높임
  • 데이터베이스 연동 : Entity Framework와 LINQ를 결합하면 SQL 쿼리를 코드 수준에서 작성 가능

 

마무리

C# LINQ는 컬렉션 데이터를 간결하고 직관적으로 처리할 수 있는 강력한 기능입니다.

필터링, 정렬, 그룹화, 객체 컬렉션 처리 등 다양한 시나리오에서 활용 가능하며, 메서드 체인과 람다식을 함께 사용하면 가독성과 유지보수성이 뛰어난 코드를 작성할 수 있습니다.

특히 실무 프로젝트에서는 LINQ를 통해 반복적인 for/foreach 루프를 줄이고, 성능과 코드 품질을 동시에 높일 수 있습니다.

 

반응형