9

PagedList はページング ライブラリです。

_dbContext.Products.ToList().ToPagedList(1, 25);

上記のコードは、ページ 1 のデータベースで最初の 25 レコードを取得します。

問題は、ToList()呼び出しがデータベース内のすべてのレコードを取得することです。次に、ToPageList()呼び出しによって最初の 25 レコードが選択されます。

データベースで最初の 25 レコードのみを取得するために、EF と PagedList を組み合わせるにはどうすればよいですか? すべてのレコードを取得するのではなく、最初の 25 レコードを取得します。

PS: 独自のページング ライブラリを作成するか、オンライン ライブラリを使用する必要がありますか? 他のライブラリを教えてください。

4

2 に答える 2

8

実際、あなたは を実行しているToList()ので、クエリが実行され、延期された実行は延期されなくなります。

呼び出しなしで試すことができますがToList()、それはすべてメソッドの実装に依存しToPagedList(int, int)ます。

ページングは​​自分で行うことができます。

const int pageSize = 25;
const int pageNumber = 1;

IQueryable<Product> query = _dbContext.Products;
var pagedQuery = query.Skip(pageSize * (pageNumber - 1)).Take(pageSize).ToList();

はい、このロジックを の拡張メソッドの背後に隠すことができますIQueryable<T>

public static class IQueryableExtensions {
    public static IQueryable<T> ToPagedQuery<T>(this IQueryable<T> query, int pageSize, int pageNumber) {
        return query.Skip(pageSize * (pageNumber - 1)).Take(pageSize);
    }
}
于 2013-11-05T08:31:00.923 に答える