2010-03-31 12 views
4

페이징을 통합하는 레코드 수를 얻는 가장 좋은 방법을 찾으려고합니다. 페이지 크기와 몇 가지 다른 변수를 고려할 때 총 페이지 수를 계산하려면이 값이 필요합니다.
이것은 내가 지금까지 skip을 사용하여 시작 행과 페이지 크기를 취하고 진술을 취하는 것입니다.Linq 페이징 - 총 레코드 수를 통합하는 방법

promotionInfo = (from p in matches 
orderby p.PROMOTION_NM descending 
select p).Skip(startRow).Take(pageSize).ToList(); 

다른 쿼리를 실행할 수는 있지만 쿼리를 두 번 실행하지 않아도이 개수를 달성 할 수있는 다른 방법이있을 수 있습니다. 사전에

감사합니다, 빌리

답변

8

나는 내가 다른 쿼리를 실행할 수 있습니다 알고 있지만, 두 번 쿼리를 실행하지 않고이 수를 달성하는 또 다른 방법이있을 수 있습니다 생각.

아니요, 쿼리를 실행해야합니다.

당신은 같은 작업을 수행 할 수 있습니다

var source = from p in matches 
      orderby p.PROMOTION_NM descending 
      select p; 
var count = source.Count(); 
var promotionInfo = source.Skip(startRow).Take(pageSize).ToList(); 

은, 그러나, 조언 Skip(0) isn't free이 될 수있다.

+0

이것은 정확하게 두 개의 히트임을 알고있는 방법입니다. 건너 뛰기 (0)는 자유롭지 않습니다. 강렬한 리소스를 의미합니까? startRow가 0 인 경우 제거해야합니까? –

+0

유대인, 그냥 그때 그것을 없애 버려. 자세한 정보를 보려면 링크를 클릭하십시오. –

+0

Skip (0)에 대한 "charge"가 EF 4에서 환불되었는지 알고 있습니까? –

관련 문제