首页 > 解决方案 > PagedList 在使用新型对象的 IQueryable 时不理解

问题描述

我正在使用Entity framework,我有

IQueryable<Doc> docs

其中 Doc 是适合我在数据库中的 Doc 表的模型。我想用Pagedlist在视图上进行分页,我必须将一个集合传递给视图,该集合Iqueryable<Docinfo>Docinfo另一种类型,并且该类型的对象是从 初始化的Doc
我使用它是为了避免将所有信息传递Doc给视图, Docinfo只包含 的一些性质Doc。这是我如何使用的代码PagedList

IPagedList<Doc> pagedDocs = docs.ToPagedList(pageNumber, PageSize);

现在 pagedDocs 有以下信息

Count: 11
FirstItemOnPage: 1
HasNextPage: true
HasPreviousPage: false
IsFirstPage: true
IsLastPage: false
LastItemOnPage: 11
PageCount: 1920
PageNumber: 1
PageSize: 11
Subset: Count = 11
TotalItemCount: 21120

现在我只从数据库中检索了 11 个项目,它们都是Doc. 如何Iqueryable<Docinfo>从这 11 个对象中创建并将其作为子集提供给 pagedList?我试图做这样的事情

IPagedList PagedList = pagedDocs.ToList().Select(m=>new DocInfo(m)).ToPagedList(pageNumber, PageSize);

但在它PagedList包含以下信息之后

Count: 11
FirstItemOnPage: 1
HasNextPage: false
HasPreviousPage: false
IsFirstPage: true
IsLastPage: true
LastItemOnPage: 11
PageCount: 1
PageNumber: 1
PageSize: 11
Subset: Count = 11
TotalItemCount: 11

如您所见,通过这种方式,我的视图将始终只有一页,因为我丢失了关于PageCount等的信息TotalItemCount

标签: c#entity-frameworkiqueryablepagedlist

解决方案


为什么你不能只使用 DbContext 而不应用 IPagedList

IUnitOfWork<YourContext> _uOf;

var context = _uOw.Context

通过上下文,您可以自由使用任何您想要的方法


推荐阅读