C#

LINQ 패턴으로 실무 C# 한 단계 업그레이드

로기221 2025. 6. 2. 17:57
728x90
반응형

 

C#에서 자주 쓰는 LINQ 패턴 정리

LINQ(Language Integrated Query)는 C# 개발자가 컬렉션, 데이터베이스, XML 등 다양한 데이터 소스를 쉽고 선언적으로 다룰 수 있게 해주는 강력한 기능입니다. 실무에서 바로 활용할 수 있는 대표 LINQ 패턴과 코드 예시를 정리합니다.

 

1. Where: 조건에 맞는 데이터 필터링

컬렉션에서 특정 조건을 만족하는 요소만 추출할 때 사용합니다.

var favorites = movies.Where(movie => movie.Rating >= 4.5);

위 코드는 평점이 4.5 이상인 영화만 필터링합니다

 

 

2. Select: 원하는 데이터 변환(Projection)

컬렉션에서 원하는 속성만 추출하거나, 새로운 형태로 변환할 때 사용합니다.

var names = students.Select(student => student.Name);

학생 리스트에서 이름만 뽑아 새로운 리스트를 만듭니다

 

 

3. Any: 조건을 만족하는 요소가 있는지 확인

컬렉션에 특정 조건을 만족하는 요소가 하나라도 있는지 빠르게 확인할 때 유용합니다.

bool hasAdult = students.Any(student => student.Age >= 18);

성인 학생이 한 명이라도 있는지 확인합니다

 

 

 

4. GroupBy: 데이터 그룹화

특정 기준으로 데이터를 묶어서 그룹화할 때 사용합니다.

var studentsByAge = students.GroupBy(student => student.Age);
foreach (var group in studentsByAge)
{
    Console.WriteLine($"나이: {group.Key}, 학생 수: {group.Count()}");
}

학생을 나이별로 그룹화해서 각 그룹의 학생 수를 출력합니다

 

 

5. First/FirstOrDefault: 첫 번째 요소 가져오기

조건을 만족하는 첫 번째 요소를 가져올 때 사용합니다.
First()는 조건을 만족하는 요소가 없으면 예외를,
FirstOrDefault()는 기본값(null 등)을 반환합니다.

var oldest = movies.OrderBy(movie => movie.ReleaseYear).First();

가장 오래된 영화를 찾는 예시입니다

 

 

6. Join: 두 컬렉션 연결

두 컬렉션을 특정 키로 연결해서 새로운 데이터를 만들 때 사용합니다.

var joined = from student in students
             join course in courses on student.CourseId equals course.Id
             select new { student.Name, course.CourseName };

학생과 강의 정보를 조인해서 학생 이름과 강의명을 출력합니다

 

 

7. 실전에서 LINQ를 더 잘 쓰는 팁

  • 의미 있는 변수명 사용: 쿼리 변수와 람다 변수에 명확한 이름을 붙이면 가독성이 좋아집니다
  • Method Syntax vs. Query Syntax: 메서드 체이닝 방식(method syntax)이 더 유연하고, 복잡한 쿼리 작성에 유리합니다
  • 성능 고려: 대용량 데이터 처리 시에는 불필요한 반복, 중복 쿼리, 즉시 실행(ToList 등) 남발을 피해야 합니다
  • 동적 쿼리: PredicateBuilder 등으로 동적으로 조건을 조립할 수 있습니다

 

마무리

LINQ의 Where, Select, Any, GroupBy, FirstOrDefault, Join 등은 실무에서 가장 자주 쓰이는 핵심 패턴입니다. 이 패턴들을 익히고, 의미 있는 변수명과 효율적인 쿼리 작성 습관을 들이면 코드 품질과 생산성이 크게 향상됩니다.

 

“LINQ는 선언적, 불변, 지연 평가(lazy evaluation) 방식으로 컬렉션을 다루는 C#의 강력한 도구입니다. 실무에서 자주 쓰는 패턴만 익혀도 대부분의 데이터 처리가 훨씬 간결해집니다.”

728x90
반응형