본문 바로가기

C#

C# IEnumerable vs IQueryable

C#에서 IEnumerableIQueryable는 데이터 쿼리에 자주 사용되는 인터페이스입니다. 두 인터페이스는 컬렉션을 반복하면서 데이터를 필터링하거나 변환하는 데 도움을 주지만, 동작 방식과 사용처가 다릅니다.

1. 개념 설명

IEnumerable는 메모리 내 컬렉션을 반복하는 데 적합하며, 모든 쿼리 조건이 애플리케이션 내에서 실행됩니다. 반면, IQueryable는 데이터 소스(예: 데이터베이스)에 쿼리를 전달해 서버에서 처리할 수 있게 하는 인터페이스입니다.

2. 코드 예제

아래 예제에서는 IEnumerableIQueryable를 간단히 비교합니다.

// IEnumerable 예제
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
IEnumerable<int> resultEnumerable = numbers.Where(n => n > 3);

foreach(var num in resultEnumerable)
{
    Console.WriteLine(num); // 4, 5 출력
}

// IQueryable 예제 (LINQ to SQL 또는 EF 필요, 가상 코드)
IQueryable<int> queryableNumbers = numbers.AsQueryable();
IQueryable<int> resultQueryable = queryableNumbers.Where(n => n > 3);

foreach(var num in resultQueryable)
{
    Console.WriteLine(num); // 4, 5 출력
}

3. 주의사항/팁

IEnumerable는 모든 데이터를 메모리로 가져온 후에 쿼리를 처리하므로 큰 데이터에서는 비효율적입니다. 반면, IQueryable는 지연 실행과 서버 측 필터링으로 효율적이나, 사용 시 데이터 소스와의 호환성을 확인해야 합니다.

'C#' 카테고리의 다른 글

C# using 문과 IDisposable  (0) 2026.04.08
C# 튜플 (Tuple)과 분해  (0) 2026.04.08
C# Span<T>과 Memory<T>  (0) 2026.04.07
C# Switch 표현식 (Switch Expression)  (0) 2026.04.07
C# Task와 Task<T> 사용법  (0) 2026.04.06