반응형
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 루프를 줄이고, 성능과 코드 품질을 동시에 높일 수 있습니다.
반응형
'c#' 카테고리의 다른 글
C# 비동기 프로그래밍 : PLINQ, CancellationToken, 고급 Task 제어 (0) | 2025.09.21 |
---|---|
C# 비동기 프로그래밍: async/await와 Task 활용 (0) | 2025.09.21 |
C# WPF/WinForms GUI 개발: MVVM, 데이터 바인딩, 커스텀 컨트롤 활용 (0) | 2025.09.18 |
C# Entity Framework(Core)와 데이터베이스 연동 (1) | 2025.09.18 |
C# 디자인 패턴 – Singleton, Factory, Observer 사용법 (0) | 2025.09.18 |