C#의 LINQ란?
질문
LINQ란?
LINQ의 특징
LINQ와 SQL의 비교
LINQ
Language-Integrated Query
- C# 및 .NET 언어에서 일관된 방식으로 데이터를 쿼리하고 조작하기 위한 기능
통합된 구문
- SQL과 비슷한 방식의 통합된 구문을 제공해 데이터를 필터링, 정렬, 그룹화 등을 간단히 수행
- 배열, 리스트, 컬렉션, 데이터베이스, XML 등 다양한 데이터 소스에 적용 가능
가독성 향상
- 데이터를 일관성 있게 처리할 수 있는 통합된 쿼리 구문 제공
- 명시적이고 직관적인 쿼리 구문으로 코드 이해가 쉽고 코드 유지 보수를 높이며 데이터 조작을 간소화
타입 안정성
- 컴파일 타임에 데이터 타입을 검증해 쿼리의 오류 검출
지연 실행
- 쿼리가 정의될 때 실행되지 않고 실제 데이터를 요청할 때 실행
- 필요한 시점까지 쿼리를 실행하지 않아 성능 최적화 가능
LINQ의 주요 구성 요소
Query Syntax
- 쿼리 구문
- SQL과 유사한 형태
Method Syntax
- 메서드 구문
- 메서드 체이닝 방식으로 쿼리 작성
LINQ Providers
- 다양한 데이터 소스에 대해 LINQ 기능을 제공
- LINQ to Objects, LINQ to SQL, LINQ to XML , …
LINQ 예제 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using System.Linq;
class Program
{
static void Main()
{
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// LINQ Query Syntax
var evenNumbers = from num in numbers where num % 2 == 0 select num;
Console.WriteLine("Even numbers:");
foreach (var num in evenNumbers)
{
Console.WriteLine(num);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
using System.Collections.Generic;
using Sysmtem.Linq;
class Program
{
static void Main()
{
List<string> fruits = new List<string> { "Apple", "Orange", "Banana", "Grape", "Melon" };
// LINQ Method Syntax
var sortedFruits = fruits.Where(fruit => fruit.Length > 3).OrderBy(fruit => fruit);
Console.WriteLine("Filtered and sorted fruits");
foreach (var fruit in sortedFruits)
{
Console.WriteLine(fruit);
}
}
}
LINQ와 SQL
LINQ
- C# 코드 내에서 다양한 데이터 소스를 처리할 수 있는 통합된 쿼리 언어
- 애플리케이션 내부에서 데이터를 조작할 때 주로 사용
SQL
- 데이터베이스에 저장된 데이터를 처리하기 위한 언어
- 데이터베이스와의 통신에 사용