프로그래밍/C#

LINQ 메서드 구문으로 C# 데이터 조작 마스터하기

shimdh 2025. 9. 2. 00:15
728x90

C#에서 LINQ는 데이터 쿼리를 보다 직관적이고 간결하게 만들어주는 강력한 도구입니다. 이 블로그 포스트에서는 LINQ의 메서드 구문을 중심으로 다양한 기능과 실용적인 예제를 통해 그 활용법을 깊이 있게 탐구해보겠습니다.

LINQ란 무엇인가?

LINQ(Language Integrated Query)는 C# 언어에 쿼리 기능을 직접 통합하여 배열, 리스트, 데이터베이스, XML 파일 등 다양한 소스의 데이터를 일관된 문법으로 다룰 수 있게 해줍니다. 이를 통해 개발자는 복잡한 데이터 조작을 보다 쉽게 수행할 수 있습니다.

메서드 구문 이해하기

메서드 구문은 LINQ 쿼리를 작성하는 두 가지 주요 방법 중 하나입니다. System.Linq 네임스페이스를 통해 제공되는 확장 메서드를 활용하여 필터링, 투영, 데이터 집계 등을 수행합니다.

핵심 구성 요소

  • 확장 메서드: 객체의 인스턴스 메서드처럼 호출할 수 있는 정적 메서드입니다.
  • 람다 표현식: => 연산자를 사용하여 익명 함수를 간결하게 표현하는 방법입니다.

자주 사용되는 LINQ 메서드

  1. Where: 조건에 따라 요소를 필터링합니다.
  2. Select: 각 요소를 새로운 형태로 투영합니다.
  3. OrderBy / OrderByDescending: 요소를 오름차순 또는 내림차순으로 정렬합니다.
  4. GroupBy: 공통 속성을 가진 요소를 그룹화합니다.
  5. ToList / ToArray: 결과를 다시 컬렉션으로 변환합니다.
728x90

실용적인 예제

학생을 나타내는 클래스를 사용하여 LINQ 메서드 구문을 실습해보겠습니다.

public class Student
{
    public string Name { get; set; }
    public int Age { get; set; }
    public double GPA { get; set; }

    public Student(string name, int age, double gpa)
    {
        Name = name;
        Age = age;
        GPA = gpa;
    }
}

샘플 데이터 생성

List<Student> students = new List<Student>
{
    new Student("Alice", 20, 3.5),
    new Student("Bob", 22, 2.8),
    new Student("Charlie", 21, 3.9),
    new Student("David", 23, 2.5)
};

다양한 LINQ 쿼리 탐색

  1. 21세 이상 학생 필터링
var olderStudents = students.Where(s => s.Age > 21).ToList();
  1. 이름과 GPA 선택
var studentNamesAndGPAs = students.Select(s => new { s.Name, s.GPA }).ToList();
  1. GPA 내림차순으로 학생 정렬
var orderedStudents = students.OrderByDescending(s => s.GPA).ToList();
  1. 나이별로 학생 그룹화
var groupedStudents = students.GroupBy(s => s.Age);
foreach (var group in groupedStudents)
{
    Console.WriteLine($"Age Group: {group.Key}");

    foreach (var student in group)
    {
        Console.WriteLine(student.Name);
    }
}
  1. 여러 작업 결합
var highAchievers = students.Where(s => s.GPA >= 3).OrderByDescending(s => s.GPA).Select(s => $"{s.Name}: {s.GPA}").ToList();

결론

LINQ 내에서 메서드 구문을 사용하는 것은 C#에서 컬렉션을 다룰 때 유연성과 명확성을 제공합니다. 확장 메서드와 람다 표현식을 효과적으로 활용하면 복잡한 데이터 조작을 간결하게 수행하면서도 가독성을 유지할 수 있습니다. 이는 견고한 애플리케이션을 개발할 때 중요한 요소입니다! 중급 C#을 계속 학습하면서 이러한 개념을 연습하면 다양한 데이터 세트를 손쉽게 처리할 수 있는 능력이 향상될 것입니다!

728x90