2011-04-08 3 views
0

상당히 큰 데이터베이스를 검색하기 위해 LINQ to SQL을 사용하고 있고 페이징을 위해 listview 및 datapager를 사용하고 있습니다. 나는 Skip() 및 Take() 메서드를 알고 있고 제대로 작동하도록했습니다. 그러나 데이터 페이지의 결과 수는 Take() 메서드에서 결정된 페이지 크기가 될 수 있으므로 사용할 수 없습니다. 예를 들어Linq-to-sql, Listview 및 Datapager를 사용하는 페이징

:

var result = (from c in db.Customers 
       where c.FirstName == "JimBob" 
       select c).Skip(0).Take(10); 

이 쿼리는 항상 1000 JimBobs가있는 경우에도, 10 개 이하의 결과를 반환합니다. 결과적으로 DataPager는 항상 단일 페이지가 있다고 생각하고 사용자는 전체 결과 세트를 탐색 할 수 없습니다.

페이지 탐색을 1000으로 표시하고 한 번에 10 개 항목을 바인딩하도록 데이터 탐색기를 속일 수 있습니까? 나는 objectdatasource를 사용하고 싶지 않다.

감사합니다.

답변

1

실행 두 번째 쿼리

var count = Customers.Where(c => c.FirstName == "JimBob").Count(); 
+0

나는 카운트를 얻는다. 그러나이 계산은 어디에서 사용합니까? 카운트가 1000이고 10이 아니라는 데이터 페이더를 어떻게 업데이트합니까? – guest

+0

제발 도와주세요 ... 이걸로 붙어서 2 일이 지났습니다. 나는 아주 간단한 것을 놓치고 있습니까? – guest

+0

필자는 데이터 페이더를 사용한 적이 없다 ... 페이징을해야한다면 skip & take를 사용하여 쿼리를 제한해야 하는가? 아니면 그것을 처리합니까? – taylonr

0

이를 사용해보십시오 .. 간단한 LINQ Paging

에 여기

var result = (from c in db.Customers 
      where c.FirstName == "JimBob" 
      select c).Skip((PAGENUMBER-1 * 10)).Take(10); 

체크 아웃 블로그 게시물은 희망이 도움이 .. :)