iqueryable 및 ienumerable C#: 지연된 실행 및 최적의 LINQ 사용 이해
둘 다 IQueryable<T> 및 IEnumerable<T>
는 연기 된 실행을 사용합니다. 이것은 결과가 실제로 필요할 때까지 쿼리가 실행되지 않음을 의미합니다.
주요 차이 : 데이터베이스 상호 작용
는 LINQ-to-Database (LINQ-to-SQL 또는 Entity Framework)와 함께 작동하여 데이터베이스 자체 내에서 쿼리 정제를 허용합니다. 이것은 메모리로 전송 된 데이터를 최소화하여 성능을 크게 향상시킵니다. 반대로는 linq-to-objects를 사용합니다. 이는 추가 처리 전에 초기 쿼리와 일치하는 전체 데이터 세트가 메모리에로드됨을 의미합니다. iqueryable을 사용하는시기 를 선택하십시오 데이터베이스 최적화는 중요합니다.
성능 향상을 위해 데이터베이스 별 최적화를 활용해야합니다. 증분 데이터 검색 :는 데이터를 점진적으로 가져 오는 혜택을 얻는 페이징 또는 유사한 작업이 필요합니다. 데이터베이스의 쿼리 정제 : 데이터 전송을 줄이려면 데이터베이스 내에서 추가 필터링 또는 조작이 발생해야합니다.
를 선택하십시오IQueryable<T>
ienumerable을 사용하는시기IEnumerable<T>
시기 : 메모리 처리 : 메모리에서 전체 데이터 세트를 조작해야합니다. Database 최적화 불필요 :
데이터베이스 별 최적화는 주요 관심사가 아닙니다. 메모리 내 데이터가 필요한 LINQ 메소드 : 메모리 내 컬렉션에서 작동하는 , 등과 같은 LINQ 메소드를 사용하고 있습니다.IQueryable<T>
예시 예 : iqueryable이있는 페이징
IEnumerable<T>
페이징 시나리오를 고려하십시오 <code class="language-csharp">var goldCustomers = db.Customers .Where(c => c.City == "<city>") .Skip(pageNumber * pageSize) .Take(pageSize);</code>,
IQueryable<T>
및 Skip는 데이터베이스 내에서 실행되므로 필요한 페이지 만 검색합니다. 지정된 도시의 모든 고객이 먼저 메모리에로드되어 효율성이 상당히 낮아집니다. 따라서는 큰 데이터 세트와 페이징과 관련된 시나리오에 선호되는 선택입니다.
위 내용은 IQueryable 대 Ienumerable : 최적의 LINQ 성능을 위해 언제 사용해야합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!