- IEnumerable이 System.Collections 네임스페이스에 있습니다.
- IQueryable이 시스템에 존재합니다. Linq 네임스페이스.
- IEnumerable과 IQueryable은 모두 정방향 컬렉션입니다.
- IEnumerable은 지연 로딩을 지원하지 않습니다.
- IQueryable 지원 지연 로딩
- 데이터베이스에서 데이터를 쿼리하는 IEnumerable은 서버 측에서 선택 쿼리를 실행하고 클라이언트 측에서 메모리 내 데이터를 로드한 다음 데이터를 필터링합니다.
- 데이터베이스에서 데이터를 쿼리하는 IQueryable은 모든 필터를 사용하여 서버 측에서 선택 쿼리를 실행합니다.
- IEnumerable 확장 메서드는 기능 개체를 사용합니다.
- IQueryable Extension 메서드는 식 개체를 사용하여 식 트리를 의미합니다.
예시
IEnumerable
dbContext dc = new dbContext ();
IEnumerable
<SocialMedia>
list = dc.SocialMedias.Where(p => p.Name.StartsWith("T"));
list = list.Take<SocialMedia>(1);
</SocialMedia>
위 쿼리에 대해 생성된 SQL 문
SELECT [t0].[ID], [t0].[Name] FROM [SocialMedia] AS [t0]
WHERE [t0].[Name] LIKE @p0
질의 가능
dbContext dc = new dbContext ();
IQueryable<SocialMedia> list = dc.SocialMedias.Where(p => p.Name.StartsWith("T"));
list = list.Take<SocialMedia>(1);
위 쿼리에 대해 생성된 SQL 문
SELECT top 1 [t0].[ID], [t0].[Name] FROM [SocialMedia] AS [t0]
WHERE [t0].[Name] LIKE @p0