본문 바로가기
개발 공식/C#

C# LINQ란? 사용 방법 정리

by JinCoding 2023. 3. 20.
반응형

 

이번에는 C#에서 유용한 LINQ(Language-Integrated Query)에 대해 알아보도록 하겠습니다.

LINQ는 C#에서 데이터 쿼리를 수행할 수 있는 강력한 도구입니다.

데이터베이스, 컬렉션, XML 등 다양한 데이터 소스에서 데이터를 쿼리할 수 있으며, 다양한 연산자를 사용하여 쿼리 결과를 필터링, 정렬, 그룹화 등 다양하게 처리할 수 있습니다.


LINQ의 기본 구성 요소

LINQ는 다음과 같은 기본 구성 요소로 이루어져 있습니다.

 

  • 데이터 소스: LINQ에서 쿼리할 데이터를 제공하는 모든 데이터 소스를 지원합니다. C#에서는 배열, 컬렉션, XML, 데이터베이스 등 다양한 데이터 소스를 지원합니다.
  • LINQ 쿼리 연산자: 쿼리 결과를 필터링, 정렬, 그룹화 등 다양하게 처리하는 연산자를 제공합니다. LINQ 쿼리 연산자는 Where, Select, OrderBy, GroupBy 등이 있습니다.
  • 쿼리 실행: LINQ 쿼리를 실행하여 결과를 가져옵니다. C#에서는 쿼리를 실행할 때 LINQ to Objects, LINQ to XML, LINQ to SQL 등 다양한 방식으로 실행할 수 있습니다.

 

LINQ의 사용 방법

다음은 LINQ를 사용하는 기본적인 방법입니다.

1. 데이터 소스를 만듭니다.

int[] numbers = { 1, 2, 3, 4, 5 };

 

2. LINQ 쿼리를 작성합니다.

var query = from num in numbers
            where num % 2 == 0
            select num;

 

3. 쿼리를 실행합니다.

foreach (var num in query)
{
    Console.WriteLine(num);
}

 

위 예제는 numbers 배열에서 짝수를 찾아 출력하는 예제입니다.

from 절에서 numbers 배열을 선언하고, where 절에서 num % 2 == 0 조건에 맞는 짝수를 찾아 select 절에서 출력합니다.

 

LINQ의 다양한 기능

LINQ는 다양한 기능을 제공하여 데이터 소스에서 데이터를 쿼리할 때 유용합니다.

이제 LINQ에서 제공하는 몇 가지 기능에 대해 살펴보겠습니다.

 

Where

Where 연산자는 지정된 조건에 맞는 요소를 필터링합니다.

다음은 numbers 배열에서 3보다 큰 수를 찾는 예제입니다.

var query = from num in numbers
            where num > 3
            select num;

 

Select

Select 연산자는 데이터 소스의 요소를 변환합니다.

다음은 numbers 배열의 모든 요소를 2배로 변환하는 예시 코드입니다.

int[] numbers = { 1, 2, 3, 4, 5 };
var doubledNumbers = numbers.Select(x => x * 2);

foreach (var num in doubledNumbers)
{
    Console.WriteLine(num);
}

 

위 코드를 실행하면, 2배가 된 모든 숫자가 출력됩니다.

 

GroupBy

LINQ에는 다양한 연산자가 존재합니다.

데이터 소스를 그룹화하고, 각 그룹에 대해 집계 함수를 실행할 수 있는 GroupBy와 Aggregate 연산자도 제공합니다.

GroupBy 연산자는 데이터 소스의 특정 키로 그룹화하고, 각 그룹을 새로운 시퀀스로 반환합니다.

Aggregate 연산자는 데이터 소스의 요소를 축적하여 결과를 반환합니다.

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var groupedNumbers = numbers.GroupBy(x => x % 2 == 0 ? "even" : "odd")
                            .Select(x => new { Key = x.Key, Count = x.Count() });

foreach (var group in groupedNumbers)
{
    Console.WriteLine($"{group.Key}: {group.Count}");
}

 

위 코드를 실행하면, 짝수와 홀수로 그룹화되어 있는 것을 확인할 수 있습니다.

LINQ를 사용하면, 이외에도 Sum, Average, Max, Min과 같은 집계 함수를 손쉽게 사용할 수 있으며, 데이터 소스를 정렬하는 OrderBy, OrderByDescending 연산자, 조인하는 Join, GroupJoin 연산자 등 다양한 연산자를 사용할 수 있습니다.

반응형

댓글