4

ADO.NET EF と LINQ を介して提供されるページングのサポートはどのようなものですか?

「最初の 10」の選択はどのように見えますか?

「次の10」選択?

4

3 に答える 3

11

他の人がここで説明したように、Take() と Skip() が必要です。

結果セットをチョップして、必要なページを取得します。

クエリの実行時にそれらを渡すことができるように、何らかの方法で PageIndex および PageSize 情報を維持する必要があります。たとえば、データ アクセスが Web サービスを介して行われる場合、フィルタリング基準と同時にインデックス/サイズを渡し、クライアント (アプリケーション、または Web サイトの場合はページ) でこれらの値を維持します。

それがあなたが探しているものである場合、すぐに使用できる「ページング用のステートフルイテレーター」はありません...

さらに、「標準のページング」構造を実装している場合は、クエリを制限する前にレコードの総数を取得する必要があります。これは、関数が PageSize と PageIndex をパラメータとして何らかの方法で取得すると仮定すると、そのようにすることができます。

var query = ...your normal query here...
int totalRecordCount = query.Count();
var pagedQuery = query.Skip(PageIndex*PageSize).Take(PageSize);
于 2009-04-21T16:49:52.480 に答える
8

Take キーワードは、取得するレコード数を決定するために使用されます。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 キーワードを使用して、必要のない数のレコード (先頭から) をスキップします。Skip キーワードの使用例を次に示します。

var first3Customers = (
            from c in customers
           where c.Region == "Kol"

            select new {c.CustomerID, c.CustomerName} )
            .Skip(3).Take(4);

詳細はこちら

于 2009-04-21T16:42:02.407 に答える
0

Visual Studio で nuget を使用できる場合は、PagedListパッケージを追加できます。

asp.netのこのリンクを見てください。

于 2013-01-09T13:41:45.147 に答える