본문 바로가기
Programming

C# LINQ(Language Integrated Query)

by 나무수피아는 지식의 가지를 뻗어가는 공간입니다. 2025. 12. 11.
반응형

LINQ to Objects 개념

LINQ (Language Integrated Query)는 C#에서 컬렉션 데이터를 쉽게 쿼리할 수 있도록 도와주는 기능입니다. LINQ를 사용하면 배열, 리스트, 데이터베이스 등 다양한 데이터 소스에 대해 쿼리 작업을 C# 문법 내에서 직접 처리할 수 있습니다.

LINQ는 주로 두 가지 방법으로 사용됩니다:

  • LINQ to Objects: 메모리에 로드된 객체나 컬렉션을 대상으로 쿼리
  • LINQ to SQL: 데이터베이스 쿼리

이번 튜토리얼에서는 LINQ to Objects에 대해서 설명합니다. LINQ를 사용하면 `Select`, `Where`, `OrderBy`, `GroupBy` 등의 메서드를 통해 컬렉션을 필터링하고, 정렬하고, 그룹화할 수 있습니다.

LINQ 메서드: Select, Where, OrderBy, GroupBy

LINQ에서 제공하는 주요 메서드는 데이터를 쿼리하고 변환하는 데 사용됩니다. 각 메서드는 매우 유용하며 직관적인 방식으로 데이터를 처리할 수 있습니다.

Select

`Select`는 컬렉션의 각 항목을 변환하는 데 사용됩니다. 예를 들어, 객체에서 특정 속성만 추출할 수 있습니다.


using System;
using System.Linq;

class Program
{
    static void Main()
    {
        var numbers = new[] { 1, 2, 3, 4, 5 };
        var squares = numbers.Select(x => x * x);

        foreach (var square in squares)
        {
            Console.WriteLine(square);  // 출력: 1, 4, 9, 16, 25
        }
    }
}

Where

`Where`는 조건에 맞는 항목만 필터링하는 데 사용됩니다.


using System;
using System.Linq;

class Program
{
    static void Main()
    {
        var numbers = new[] { 1, 2, 3, 4, 5 };
        var evenNumbers = numbers.Where(x => x % 2 == 0);

        foreach (var num in evenNumbers)
        {
            Console.WriteLine(num);  // 출력: 2, 4
        }
    }
}

OrderBy

`OrderBy`는 데이터를 오름차순으로 정렬하는 데 사용됩니다.


using System;
using System.Linq;

class Program
{
    static void Main()
    {
        var numbers = new[] { 5, 2, 3, 4, 1 };
        var sortedNumbers = numbers.OrderBy(x => x);

        foreach (var num in sortedNumbers)
        {
            Console.WriteLine(num);  // 출력: 1, 2, 3, 4, 5
        }
    }
}

GroupBy

`GroupBy`는 데이터를 특정 키를 기준으로 그룹화하는 데 사용됩니다.


using System;
using System.Linq;

class Program
{
    static void Main()
    {
        var people = new[]
        {
            new { Name = "John", Age = 30 },
            new { Name = "Jane", Age = 30 },
            new { Name = "Sam", Age = 25 },
            new { Name = "Sara", Age = 25 }
        };

        var groupedByAge = people.GroupBy(p => p.Age);

        foreach (var group in groupedByAge)
        {
            Console.WriteLine($"Age {group.Key}:");
            foreach (var person in group)
            {
                Console.WriteLine($"  {person.Name}");
            }
        }
    }
}

var와 from 구문

LINQ 쿼리를 작성할 때 `var`와 `from` 구문을 사용하여 더욱 간결하게 작성할 수 있습니다.

var

`var`는 컴파일러가 타입을 추론하여 변수를 선언하는 데 사용됩니다. LINQ에서 `var`를 사용하면 쿼리 결과의 타입을 명시적으로 지정할 필요가 없어서 코드가 간결해집니다.


using System;
using System.Linq;

class Program
{
    static void Main()
    {
        var numbers = new[] { 1, 2, 3, 4, 5 };
        var evenNumbers = from num in numbers
                          where num % 2 == 0
                          select num;

        foreach (var num in evenNumbers)
        {
            Console.WriteLine(num);  // 출력: 2, 4
        }
    }
}

from 구문

LINQ에서는 `from` 구문을 사용하여 쿼리의 시작 부분을 정의할 수 있습니다. 이는 SQL 쿼리와 유사한 방식으로 데이터를 선택하는 구문입니다.


using System;
using System.Linq;

class Program
{
    static void Main()
    {
        var numbers = new[] { 5, 3, 8, 1, 2 };
        var result = from number in numbers
                     where number > 3
                     select number;

        foreach (var num in result)
        {
            Console.WriteLine(num);  // 출력: 5, 8
        }
    }
}
반응형

'Programming' 카테고리의 다른 글

C# NET Core  (0) 2025.12.13
C# WPF/WinForms UI 프로그래밍  (0) 2025.12.12
C# 델리게이트와 이벤트  (0) 2025.12.10
C# 컬렉션과 제네릭  (0) 2025.12.09
C# 객체지향 프로그래밍 (OOP)  (0) 2025.12.08