이번에는 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 연산자 등 다양한 연산자를 사용할 수 있습니다.
'개발 공식 > C#' 카테고리의 다른 글
C# 언어 대리자(delegate)와 람다식(lambda)을 알아보자 (0) | 2023.03.19 |
---|---|
C# 언어 인터페이스 사용 방법 (0) | 2023.03.19 |
C# 언어 상속 오버라이딩 방법 (0) | 2023.03.18 |
C# 언어 상속, 인터페이스, 대리자, LINQ (0) | 2023.03.18 |
C# 초보자를 위한 기초 강좌 (0) | 2023.03.17 |
댓글