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# IEnumerable, IEnumerator에 대해서
IEnumerator 열거자를 구현하는데 필요한 인터페이스, 클래스 내부의 컬렉션에 대해 반복할 수 있도록 도와준다. public interface IEnumerator { object Current { get; } bool MoveNext(); void Reset(); } IEnumerator는 반복
jettstream.tistory.com
Effective C# Item 42 : IEnumerable<T> 데이터 소스와 IQueryable<T> 데이터 소스를 구분하라
IEnumerable 데이터 소스와 IQueryable 데이터 소스를 구분하라IQueryable와 IEnumerable는 거의 동일한 API 정의를 가진다. 따라서 이 두 인터페이스는 상호 교환 가능하다고 생각할 것이며 실제로도 대
jettstream.tistory.com
참고 사이트
IQueryable vs IEnumerable 차이점
평소에 작업을 복사 붙여넣기만 하다보니 그 구문을 왜쓰는지 모르고 그냥 작성하다보니 안좋은 습관만점점늘어가는거같아서 "왜? 이걸썻을까 무슨생각으로 썻을까" 라는 마인드를 가지고 이
moonna.tistory.com
https://jhyeok.com/ienumerable-vs-iqueryable/
이 글은 처음에 IEnumerable vs IQueryable 관련된 여러 글을 읽었는데 가장 이해가 잘 되었던 stackoverflow의 글을 참고해서 적은 글이다. IEnumerable vs IQueryable 차이점은 IQueryable 는 LINQ-to-SQL(LINQ.-to-anything)
jhyeok.com
'프로그래밍 > 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 |
댓글