ADO.NET EFとLINQではどのようなページングのサポートが提供されていますか?ページングのサポート - ADO.NET Entitry FrameworkとLINQ
「最初の10」の選択外観は何ですか?
"次の10"を選択しますか?
ADO.NET EFとLINQではどのようなページングのサポートが提供されていますか?ページングのサポート - ADO.NET Entitry FrameworkとLINQ
「最初の10」の選択外観は何ですか?
"次の10"を選択しますか?
Takeキーワードは、多くのレコードを取得する方法を決定するために使用されます。 A Takeキーワードの簡単な例は、 です。
リストの顧客= GetCustomerList();
var first3Customers = ( from c in customers select new {c.CustomerID, c.CustomerName}) .Take(4);
は、ここでは、提供されたリストの最初の4 顧客を取っています。
また、where句を に指定すると、最初にリストを絞り込み、次に を4つ取ります。
var first3Customers = ( from c in customers where c.Region == "Kol" select new {c.CustomerID, c.CustomerName}) .Take(4);
しかし、我々は4と8のレコード間 データを取得したい場合。 このケースでは、スキップキーワード を使用して、レコードの数をスキップします(上から) したくありません。 Skipキーワードを使用した の例を次に示します。
var first3Customers = ( from c in customers where c.Region == "Kol" select new {c.CustomerID, c.CustomerName}) .Skip(3).Take(4);
もっとHere
他の人がここで説明したように、(テイク)及び(スキップ)何が必要です。
あなたが望むページを得るために結果セットを切り詰めます。
PageIndexとPageSize情報は、クエリの実行時に渡すことができるように、何らかの形で維持する必要があります。 たとえば、Webサービスを通じてデータアクセスが行われている場合は、フィルタリング基準と同時にインデックス/サイズを渡し、クライアント(アプリケーションまたはWebサイトの場合はページ)にその値を保持します。
それはあなたが探しているものであれば何の「ページングのためのステートフル反復子」は、ボックスの外にありません...
あなたが構築する「標準のページング」を実施している場合はまた、あなたがする必要があります。あなたの関数は何とかパラメータとしてのPageSizeと、pageIndexパラメータを取得すると仮定すると、あなたがそのように行うことができますあなたのクエリを、制限する前に、レコードの合計数を取得する:あなたはVisual Studioで利用できるnugetしている場合は
var query = ...your normal query here...
int totalRecordCount = query.Count();
var pagedQuery = query.Skip(PageIndex*PageSize).Take(PageSize);
、あなたはPagedList
を追加することができますパッケージ。
見てくださいthis link at asp.net