반응형
IEnumerable과 IQueryable에 대해서
처음에는 이 둘이 한쌍으로 묶일 거라고는 전혀 상상하지 못했다. 일단 이름부터 너무 다르지 않은가?
하지만 이 둘을 묶어서 비교하다보면 같이 설명하는 이유에 대해서 알게 될 것이다.
IEnumerable
LINQ-to-Object가 작동하도록 하는 인터페이스이다.
public IEnumerable<T> getListCode(string code)
{
return _dbset.Where(p => p.Code == code);
}
해당 구문을 실행하게 되면 DB 테이블을 통으로 조회를 한 후 서버 메모리에 로드하고 처리하게 된다.
ex) select * from table명
IQueryable
LINQ-to-SQL이 작동하도록 하는 인터페이스이다.
public IQueryable<T> getListcode(string code)
{
return _dbset.Where(p => p.Code = code);
}
해당 구문을 실행하게 되면 WHERE 조건이 걸린 쿼리가 데이터베이스 내부에서 실행되고 해당 결과를 서버단 메모리에 로드한다.
ex) select * from table명 where Code = code
IEnumerable vs IQueryable
이 둘의 가장 큰 차이점은 IQueryble<T>는 LINQ-to-SQL이 작동할 수 있도록 하는 인터페이스라는 점이다. 이에 반해 IEnumerable<T>는 LINQ-to-Object로 작동하는 인터페이스이다.
IQueryable<T>를 사용하면 많은 데이터를 로드할 필요 없이 원하는 필터링만 조회할 수 있다.
IEnumerable<T>를 사용하면 모든 행이 메모리에 로드된다.
- IEnumerable 소량의 데이터에 적합
- IQueryable 대량의 데이터에 적합
함께 읽으면 좋은 글
참고 사이트
'프로그래밍 > C#' 카테고리의 다른 글
C# HttpClient.PostAsync 사용하기 (0) | 2024.10.07 |
---|---|
C# HTTP 프로토콜과 Web 사용 (0) | 2024.10.02 |
C# Trim() 메서드에 대해서 (0) | 2024.09.10 |
C# list 검색 시 First() vs Find() 차이점 (0) | 2024.06.24 |
Json 파일 형태에 따른 역직렬화 코드 예제 (0) | 2024.06.05 |
댓글