본문 바로가기
코딩강좌/LINQ

C#의 핵심은 LINQ입니다. LINQ 알아보기

by 대디동동 2023. 11. 7.
728x90

프로그램 언어마다 대표되는 특징과 장점이 있습니다.

A.I 및 Big Data 처리에 관련한 많은 라이브러리와 좋은 퍼포먼스를 보여주는 Python,

안정적이고 빠른 처리 능력을 보여주며 현재까지도 홈페이지 및 커뮤니티에 사용되는 PHP,

복잡한 비즈니즈 로직 및 확장에 용이한 안정적인 JAVA가 있듯이,

제가 생각하는 C#의 대표적인 특징은 LINQ를 통한 다양한 데이터 핸들링인 것 같습니다.

 

프로그램을 개발을 하다 보면 Database, JSON, XML 등 여러 가지 형태의 Data를 처리해야 하는데

C#의 LINQ가 이러한 작업을 어떻게 처리하는지에 대해서 알아보겠습니다.


LINQ 알아보기

1. LINQ 정의

LINQ (Language Integrated Query)는 C#을 통해서 데이터 질의(Query) 및 조작 기능을 지원하는 기술을 말합니다.

LINQ를 사용하면 컬렉션, 데이터베이스, XML 등 다양한 데이터 원본에서 데이터를 쉽게 질의하고 조작할 수 있고,

select, where, order, group 등의 쿼리문을 통해서 간결하고 가독성 높게 유지관리 할 수 있어서 데이터 처리 효율을 높일 수 있습니다.

 

2. LINQ 주요 특징

첫 번째, 다양한 데이터 소스를 지원

LINQ는 기본적인 Database 뿐만 아니라 객체, 배열, 리스트, 딕셔너리, XML 등 다양한 데이터 원본을 지원합니다.

즉, 데이터 원본이 어떤 것이든지 상관없이 객체, 배열 등으로 변환할 수 있다면 LINQ를 사용할 수 있습니다.

 

두 번째, LINQ 쿼리(Query)를 사용

LINQ 쿼리는 데이터 소스에서 데이터를 검색, 조작하는 식을 말하는데,

Database에서 사용하는 SQL문과 비슷한 방식으로 select, where, group, orderby 등을 문장 형태로 사용할 수 있어서

SQL문을 몰라도 쉽게 사용할 수 있습니다.

즉, 다양한 데이터 원본을 하나의 "통합된 언어" 하나만 배우면 되기 때문에 Learning Curve를 줄일 수 있습니다.

 

세 번째, 확장 메서드 지원

IEnumerable 또는 IQueryable 형식을 지원하기 때문에 Dataset, Datatable 뿐만 아니라,

개발자가 직접 만든 Class 객체를 foreach 문을 통해서 반복하면서 처리가 가능한 강력한 기능이 있습니다.

 

네 번째, 람다식(Lambda Expression, 익명 형식 함수) 지원

람다식을 통해서 더욱 간결한 코드와 이해하기 쉬워 유지보수 및 협업에 탁월한 효과를 나타냅니다. 

개인적으로 세 번째와 네 번째 특징을 조합하여 여러 줄의 코드를 이해하기 쉽게 줄일 수 있으며

다양한 데이터 형식을 동적으로 생성할 수 있어 가장 많이 사용합니다.

 

다섯 번째, 강력한 데이터 형식 지원

대부분의 경우 컴파일러가 형식을 유추할 수 있어 명시적으로 형식을 제공할 필요는 없고,

데이터 형식을 엄격히 지키기 때문에 오류를 미연에 방지할 수 있는 특징이 있습니다.

 

3. LINQ 사용 예제

LINQ를 사용한 예제를 보여드리면 더 쉽게 이해를 할 수 있습니다.

아래의 예제는 쿼리 형식과 람다 표현을 이용한 두 가지 방식을 설명합니다.

List<int> numbers = new List<int> { 1, 5, 2, 8, 3, 9, 4, 6, 7, 10 };

/**************************************************************************/
// LINQ Query
IEnumerable<int> oddQuery =
    from number in numbers
    where number % 2 == 1
    orderby number ascending
    select number;

Console.WriteLine("홀수 오름차순:");
foreach (var number in oddQuery)
{
    Console.WriteLine(number);
}

//Output
홀수 오름차순:
1
3
5
7
9

/**************************************************************************/
// LINQ Lambda
var evenNumbers = numbers.Where(n => n % 2 == 0).OrderByDescending(n => n);

Console.WriteLine("짝수 내림차순:");
foreach (var number in evenNumbers)
{
    Console.WriteLine(number);
}

//Output
짝수 내림차순:
10
8
6
4
2

 

이번 시간에는 LINQ란 무엇이고 어떤 특징이 있는지에 확인하고

샘플 예제 코드를 통해서 어떻게 사용되는지에 대해서 알아 보았습니다.

 

저와 같은 Senior 개발자는 한 가지 프로그램 언어만 고집하지 않지만,

C# 말고 다른 언어를 사용해서 개발할 경우 LINQ 같은 기능이 없으면 무척 답답함을 느낍니다.

다음 게시물을 통해서 이처럼 유용한 LINQ를 좀 더 깊이 있게 사용하는 방법을 설명 드리겠습니다.

 

 

반응형