728x90
LINQ(Language Integrated Query)는 C#에서 제공하는 강력한 기능으로, 다양한 데이터 소스를 일관된 문법으로 쿼리할 수 있게 해줍니다. 이 블로그에서는 LINQ의 주요 개념과 사용 예제를 통해 LINQ의 장점과 활용 방법을 알아보겠습니다.
LINQ 쿼리 문법의 주요 개념
데이터 소스
LINQ는 IEnumerable<T> 또는 IQueryable<T>를 구현하는 모든 컬렉션과 함께 작동할 수 있습니다. 배열, 리스트, 데이터베이스 등 다양한 데이터 소스를 지원합니다.
쿼리 구조
LINQ 쿼리는 다음과 같은 구성 요소로 이루어져 있습니다:
- From 절: 데이터 소스를 지정합니다.
- Where 절: 조건에 따라 결과를 필터링합니다.
- Select 절: 원하는 출력 형식을 투영합니다.
지연 실행
쿼리는 열거될 때까지 실행되지 않습니다. 이는 복잡한 쿼리를 즉시 실행하지 않고도 구축할 수 있음을 의미합니다.
연산 체이닝
여러 절을 연결하여 쿼리를 더욱 세밀하게 조정할 수 있습니다.
728x90
기본 예제
정수 리스트에서 짝수를 필터링하는 예제를 살펴보겠습니다:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6 };
var evenNumbers = from num in numbers
where num % 2 == 0
select num;
Console.WriteLine("Even Numbers:");
foreach (var number in evenNumbers)
{
Console.WriteLine(number);
}
}
}
이 예제에서는 from 절로 데이터 소스를 정의하고, where 절로 짝수를 필터링하며, select 절로 필터링된 숫자를 반환합니다.
더 복잡한 예제
학생의 이름과 성적을 포함하는 객체로 표현된 학생 리스트를 사용한 예제를 살펴보겠습니다:
public class Student
{
public string Name { get; set; }
public int Grade { get; set; }
}
class Program
{
static void Main()
{
List<Student> students = new List<Student>
{
new Student { Name = "Alice", Grade = 85 },
new Student { Name = "Bob", Grade = 92 },
new Student { Name = "Charlie", Grade = 78 },
new Student { Name = "David", Grade = 88 }
};
var highAchievers =
from student in students
where student.Grade > 80
orderby student.Name ascending
select new
{
student.Name,
student.Grade
};
Console.WriteLine("High Achievers:");
foreach (var achiever in highAchievers)
{
Console.WriteLine($"{achiever.Name}: {achiever.Grade}");
}
}
}
이 시나리오에서는 성적이 80점을 초과하는 학생들만 선택하며, 이름을 알파벳 순으로 정렬한 후 익명 타입으로 이름과 성적을 투영합니다.
LINQ 쿼리 문법 사용의 이점
- 가독성: 구조가 자연어 또는 SQL과 유사하여 개발자가 코드를 처음 볼 때 무엇을 하는지 쉽게 이해할 수 있습니다.
- 간결성: 필터링이나 컬렉션 변환을 위한 전통적인 루프에 비해 적은 코드로 작성할 수 있습니다.
- 유연성: 배열 쿼리에서부터 Entity Framework를 통한 데이터베이스 레코드 접근까지 다양한 데이터 소스에서 사용할 수 있습니다.
- 다른 기능과의 통합: 메서드 문법과 결합할 때 확장 메서드 및 람다 표현식과 같은 다른 C# 기능과 원활하게 작동합니다.
LINQ의 기능을 쿼리 문법을 통해 효과적으로 활용함으로써, 애플리케이션 내에서 데이터 조작 작업을 단순화하는 깔끔하고 효율적인 코드를 작성할 수 있습니다!
728x90
'프로그래밍 > C#' 카테고리의 다른 글
| LINQ: C# 개발자를 위한 강력한 쿼리 도구 (0) | 2025.09.02 |
|---|---|
| LINQ 메서드 구문으로 C# 데이터 조작 마스터하기 (0) | 2025.09.02 |
| C#에서 델리게이트와 이벤트의 강력한 활용법 (1) | 2025.09.01 |
| C#에서 델리게이트와 이벤트의 이해와 활용 (0) | 2025.08.31 |
| C#에서 대리자와 이벤트의 중요성 및 활용 방법 (0) | 2025.08.31 |