시퀀스에서 쿼리 연산자를 호출하면 시퀀스 관련 연산자가 호출됩니다.
연산자를 IEnumerable<>
에 호출하면 호출 할 연산자가 Enumerable 클래스에 정의되고 IQueryable<>
에서 호출되면 쿼리 가능 클래스에 정의 된 연산자가 호출됩니다.AsEnumerable()은 모든 결과 (LINQ)를 캐시합니까?
Enumerable 클래스에 정의 된 연산자 인 Reverse를 생각해보십시오.
Iqueryable<>
에 전화를 걸려면 먼저 AsEnumerable<>()
연산자를 사용하여 먼저 IEnumerable<>
으로 변환해야합니다.
db.Countries.OrderBy(cntry=>cntry.CountryName).AsEnumerable().Reverse()
그러나 반전 연산자는 모든 레코드를 동시에 가져 와서 반대로 할 수 있습니다.
위의 코드에서 모든 레코드가 먼저 메모리에로드되고 Reverse() 연산자가이를 반대로 수행합니까?
예. 결과 집합을 구체화하지 않은 경우 어떻게 그것을 역전시킬 수 있습니까? –
명백한 한계로 보지 않습니다. 확신 할 수는 없지만 결과 ID를 구체화하지 않고 쿼리에서 "Order by Id DESC"를 푸시 할 수 있습니다. – JohnMetta