LINQ to Objects 개념
LINQ (Language Integrated Query)는 C#에서 컬렉션 데이터를 쉽게 쿼리할 수 있도록 도와주는 기능입니다. LINQ를 사용하면 배열, 리스트, 데이터베이스 등 다양한 데이터 소스에 대해 쿼리 작업을 C# 문법 내에서 직접 처리할 수 있습니다.
LINQ는 주로 두 가지 방법으로 사용됩니다:
- LINQ to Objects: 메모리에 로드된 객체나 컬렉션을 대상으로 쿼리
- LINQ to SQL: 데이터베이스 쿼리
이번 튜토리얼에서는 LINQ to Objects에 대해서 설명합니다. LINQ를 사용하면 `Select`, `Where`, `OrderBy`, `GroupBy` 등의 메서드를 통해 컬렉션을 필터링하고, 정렬하고, 그룹화할 수 있습니다.
LINQ 메서드: Select, Where, OrderBy, GroupBy
LINQ에서 제공하는 주요 메서드는 데이터를 쿼리하고 변환하는 데 사용됩니다. 각 메서드는 매우 유용하며 직관적인 방식으로 데이터를 처리할 수 있습니다.
Select
`Select`는 컬렉션의 각 항목을 변환하는 데 사용됩니다. 예를 들어, 객체에서 특정 속성만 추출할 수 있습니다.
using System;
using System.Linq;
class Program
{
static void Main()
{
var numbers = new[] { 1, 2, 3, 4, 5 };
var squares = numbers.Select(x => x * x);
foreach (var square in squares)
{
Console.WriteLine(square); // 출력: 1, 4, 9, 16, 25
}
}
}
Where
`Where`는 조건에 맞는 항목만 필터링하는 데 사용됩니다.
using System;
using System.Linq;
class Program
{
static void Main()
{
var numbers = new[] { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(x => x % 2 == 0);
foreach (var num in evenNumbers)
{
Console.WriteLine(num); // 출력: 2, 4
}
}
}
OrderBy
`OrderBy`는 데이터를 오름차순으로 정렬하는 데 사용됩니다.
using System;
using System.Linq;
class Program
{
static void Main()
{
var numbers = new[] { 5, 2, 3, 4, 1 };
var sortedNumbers = numbers.OrderBy(x => x);
foreach (var num in sortedNumbers)
{
Console.WriteLine(num); // 출력: 1, 2, 3, 4, 5
}
}
}
GroupBy
`GroupBy`는 데이터를 특정 키를 기준으로 그룹화하는 데 사용됩니다.
using System;
using System.Linq;
class Program
{
static void Main()
{
var people = new[]
{
new { Name = "John", Age = 30 },
new { Name = "Jane", Age = 30 },
new { Name = "Sam", Age = 25 },
new { Name = "Sara", Age = 25 }
};
var groupedByAge = people.GroupBy(p => p.Age);
foreach (var group in groupedByAge)
{
Console.WriteLine($"Age {group.Key}:");
foreach (var person in group)
{
Console.WriteLine($" {person.Name}");
}
}
}
}
var와 from 구문
LINQ 쿼리를 작성할 때 `var`와 `from` 구문을 사용하여 더욱 간결하게 작성할 수 있습니다.
var
`var`는 컴파일러가 타입을 추론하여 변수를 선언하는 데 사용됩니다. LINQ에서 `var`를 사용하면 쿼리 결과의 타입을 명시적으로 지정할 필요가 없어서 코드가 간결해집니다.
using System;
using System.Linq;
class Program
{
static void Main()
{
var numbers = new[] { 1, 2, 3, 4, 5 };
var evenNumbers = from num in numbers
where num % 2 == 0
select num;
foreach (var num in evenNumbers)
{
Console.WriteLine(num); // 출력: 2, 4
}
}
}
from 구문
LINQ에서는 `from` 구문을 사용하여 쿼리의 시작 부분을 정의할 수 있습니다. 이는 SQL 쿼리와 유사한 방식으로 데이터를 선택하는 구문입니다.
using System;
using System.Linq;
class Program
{
static void Main()
{
var numbers = new[] { 5, 3, 8, 1, 2 };
var result = from number in numbers
where number > 3
select number;
foreach (var num in result)
{
Console.WriteLine(num); // 출력: 5, 8
}
}
}
'Programming' 카테고리의 다른 글
| C# NET Core (0) | 2025.12.13 |
|---|---|
| C# WPF/WinForms UI 프로그래밍 (0) | 2025.12.12 |
| C# 델리게이트와 이벤트 (0) | 2025.12.10 |
| C# 컬렉션과 제네릭 (0) | 2025.12.09 |
| C# 객체지향 프로그래밍 (OOP) (0) | 2025.12.08 |