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は常に1つのページがあると考え、ユーザーは結果セット全体をナビゲートできません。私は著者がちょうどトータルカウントを得るために別のクエリを書いて、それを呼んだ1つのオンライン記事を見てきました。
int resultCount = (from c in db.Customers
where c.FirstName == "JimBob"
select c).Count();
とDataPagerのためにその値を使用:のような
何か。しかし、私は実際にはすべてのクエリをコピーして別の呼び出しに貼り付ける必要はなく、明らかな理由で結果をページングしたいと思っています。複数のクエリで再利用できる簡単な方法はありますか?
ありがとうございました。
感謝。私は実際にサイトから要求されたパフォーマンスを得ることができなかったので、このアプローチから転記しました。上のコードは一度データベースにヒットするだけですか? –
いいえ、データベースに2回ヒットします。 – TGnat