2010-07-11 2 views
0

(HttpRuntime.Cache)를 캐싱하려는 상당히 복잡한 쿼리 (전체 텍스트 검색을 허용하는 테이블 값 함수 포함)가 있습니다. 페이징 목적. 캐시 된 L2S 쿼리를 사용하려고하면 위에서 설명한 오류가 발생합니다. 쿼리 결과를 두 번 이상 열거 할 수 없습니다.L2S, 캐싱 및 오류 : 쿼리 결과를 두 번 이상 열거 할 수 없습니다.

캐시 된 개체에서 AsIQueryable()을 호출하여 내 쿼리를 다른 IQueryable 개체에 할당하려고 시도했지만 도움이되지 않습니다.

아이디어가 있으십니까?

답변

3

.ToArray() 또는 .ToList() 확장 메서드를 호출하여 쿼리를 즉시 실행하는 쿼리 자체 대신 캐시에 쿼리 결과를 저장할 수 있습니다. 그런 다음 캐시에서 결과를 원하는만큼 열거 할 수 있습니다.

+0

감사 대린 같은 인덱스를 줄 필요가 명백한, 그러나 다른 L2S 문제점의 한가운데에, (asp.net mvc)로 시작하기 위하여 생소한 기술을 사용하여 나는 그것을 놓쳤다. – jlnorsworthy

0

사용

var retVal = (.....) First() 또는 ToList(); 꽤 보인다 - 당신이 ToList()를 사용하는 경우

및 retVal.Name, retVal.Surname를 사용

....

는 ;, 당신은 RETVAL [1] .name을

관련 문제