본문 바로가기

C#

IEnumerable vs IQueryable 차이점

728x90

[IEnumerable]
Linq-to-Object가 작동하도록 하는 인터페이스이다. 원래 쿼리와 일치하는 모든 개체가 데이터베이스 메모리에 온로드된다. Linq 구절을 실행하게 되면 master 테이블을 통으로 조회한 후 서버단에서 처리를 한다.

[IQueryable]
Linq-to-Sql이 작동하도록 하는 인터페이스이다. Linq 구절이 있는 쿼리가 데이터베이스에서 실행이 되고 데이터 베이스 메모리에 필터링 값을 로드시켜준다.


- 둘의 차이점은 IQueryable<T>를 사용하면 많은 데이터를 로드할 필요 없이 원하는 필터링만 조회할 수 있다.
예로, 페이징 처리를 할 수 있다. Take 및 Skip을 이용해 요청한 행만 확보할 수 있다.
IEnumerable을 사용하면 모든 행이 메모리에 로드가 된다.

- 요약을 하자면,
IEnumerable은 메모리에 로드한 수 필터링을 하는 것이고,
IQueryable은 필터링을 거친 후 필요한 데이터만 가져온다.

[출처]
https://www.codeproject.com/Articles/766541/IEnumerable-vs-IQueryable
https://moonna.tistory.com/53

[참고하기]
https://stackoverflow.com/questions/1578778/using-iqueryable-with-linq/1578809#1578809

728x90