'IQueryable'에 해당하는 글 1건


평소에 작업을 복사 붙여넣기만 하다보니 그 구문을 왜쓰는지 모르고 그냥 작성하다보니 


안좋은 습관만점점늘어가는거같아서


"왜? 이걸썻을까 무슨생각으로 썻을까" 라는 마인드를 가지고 이제는 그 코드에 개발자가 무슨생각으로 코딩을했을까


생각을 하고 나름대로 정리를 해보려고한다 


IQueryable  과 IEnumerable 의 차이에 대해 알아보려고 한다 


IEnumerable


LINQ-to-Object 이 작동하도록 하는 인터페이스이다. 원래 쿼리와 일치하는 모든개체가


데이터 베이스 메모리에 온로드된다 


 

1
2
3
4
5
6
//EF , dbset
 
public IEnumerable<master> getListCode(string code)
{
    return _dbset.Where(p => p.CODE = code);
}
cs



이구문을 실행하게 되면  master 테이블을 통으로 조회를 한후 서버단에서 처리를한다 


ex) select * from master 


그후 서버에서 where 필터링을 해준다


동작방식은 밑에그림 참조




IQueryable  



LINQ-to-SQL 이 작동하도록 하는 인터페이스이다. WHERE 조건을 걸린 쿼리가 데이터베이스에서 실행이되고


데이터베이스메모리에 code 필터링 값을 로드시켜준다


1
2
3
4
5
6
//EF , dbset
 
public IQueryable<master> getListCode(string code)
{
    return _dbset.Where(p => p.CODE = code);
}
cs



ex) select * from master where code = 2





둘의차이점은 IQueryable<T> 을 사용하면 많은 데이터를 로드할필요없이 원하는 필터링만 조회를할수있다 

예로 페이징처리를 할수있다 Take 밑 Skip 을 이용해 요청한 행만 확보할수있다

IEnumerable 을 사용하면 모든행이 메모리에 로드가된다.


간단히 요약을 하자면 


IEnumerable 은 메모리에 로드한후 필터링을 하는것이도

IQueryable 은 필터링을 거친후 필요한 데이터만 가져온다





출처 : https://www.facebook.com/DotNetInterviewQuestions/videos/751393584901587 

, https://www.codeproject.com/Articles/766541/IEnumerable-vs-IQueryable


'ASP.NET MVC' 카테고리의 다른 글

ASP.NET MVC :: JSON 데이터형식을 커스텀모델에 담기  (0) 2018.08.04

WRITTEN BY
내가달이다

,