LINQ to SQL を使用してかなり大きなデータベースを検索していますが、DataPager でページングを実行するための最適な方法がわかりません。Skip() および Take() メソッドを認識しており、それらが適切に機能しています。ただし、結果のカウントは常に Take() メソッドで決定されるページ サイズになるため、datapager の結果のカウントを使用することはできません。
例えば:
var result = (from c in db.Customers
where c.FirstName == "JimBob"
select c).Skip(0).Take(10);
このクエリは、1000 個の JimBob がある場合でも、常に 10 個以下の結果を返します。その結果、DataPager は常に単一のページであると認識し、ユーザーは結果セット全体をナビゲートできなくなります。著者が別のクエリを作成して合計数を取得し、それを呼び出したオンライン記事を見たことがあります。
何かのようなもの:
int resultCount = (from c in db.Customers
where c.FirstName == "JimBob"
select c).Count();
その値を DataPager に使用しました。しかし、明らかな理由から、結果をページングしたい場合に、すべてのクエリを別の呼び出しにコピー アンド ペーストする必要はありません。複数のクエリで再利用できる、これを行う簡単な方法はありますか?
ありがとう。