프로그램 언어마다 대표되는 특징과 장점이 있습니다.
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를 좀 더 깊이 있게 사용하는 방법을 설명 드리겠습니다.
'코딩강좌 > LINQ' 카테고리의 다른 글
LINQ - ToList, ToArray, ToDictionary, ToLookup 알아보기 (1) | 2023.12.29 |
---|---|
LINQ Query 강좌 - from, select, group, let, join (0) | 2023.11.16 |
LINQ Query Expression (쿼리 식), 쿼리 변수 배우기 (0) | 2023.11.13 |
LINQ 쿼리(Query)란? - SQL 인 듯 아닌 듯, 개념부터 알아가기 (1) | 2023.11.09 |