2009-04-21 14 views

答えて

8

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

11

他の人がここで説明したように、(テイク)及び(スキップ)何が必要です。

あなたが望むページを得るために結果セットを切り詰めます。

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); 
0

、あなたはPagedListを追加することができますパッケージ。

見てくださいthis link at asp.net

関連する問題