상당히 큰 데이터베이스를 검색하기 위해 LINQ to SQL을 사용하고 있으며 DataPager로 페이징을 수행하는 최선의 방법이 확실하지 않습니다. 나는 Skip() 및 Take() 메서드를 알고 있고 제대로 작동하도록했습니다. 그러나 데이터 페이지의 결과 수는 Take() 메서드에서 결정된 페이지 크기가 될 수 있으므로 사용할 수 없습니다. 예를 들어LINQ to SQL 및 DataPager
:
var result = (from c in db.Customers
where c.FirstName == "JimBob"
select c).Skip(0).Take(10);
이 쿼리는 항상 1000 JimBobs가있는 경우에도, 10 개 이하의 결과를 반환합니다. 결과적으로 DataPager는 항상 단일 페이지가 있다고 생각하고 사용자는 전체 결과 세트를 탐색 할 수 없습니다. 저자가 총 조사를 위해 또 다른 쿼리를 작성하고 호출 한 온라인 기사 한 개를 보았습니다. 같은
뭔가 :
int resultCount = (from c in db.Customers
where c.FirstName == "JimBob"
select c).Count();
하고는있는 DataPager에 대한 그 값을 사용했다. 하지만 실제로 모든 쿼리를 복사하여 별도의 호출에 붙여 넣을 필요가 없으므로 확실한 이유 때문에 결과를 페이지에 표시해야합니다. 여러 쿼리에서 다시 사용할 수있는 더 쉬운 방법이 있습니까?
감사합니다.
감사합니다. 나는 실제로 사이트에서 요구하는 성능을 얻을 수 없어서 게시 이후이 접근법에서 벗어났습니다. 위의 코드는 데이터베이스에 한 번만 도달합니까? –
아니요, 데이터베이스에 두 번 도달합니다. – TGnat