使用新型对象的IQueryable时,PagedList无法理解

时间:2018-08-09 07:26:38

标签: c# entity-framework iqueryable pagedlist

我正在使用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类型。 如何从这11个对象创建Iqueryable<Docinfo>并将其作为子集提供给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

如您所见,以这种方式,视图上始终只有一页,因为我丢失了有关PageCountTotalItemCount等的信息。

1 个答案:

答案 0 :(得分:0)

为什么不能不应用IPagedList而仅使用DbContext操作

IUnitOfWork<YourContext> _uOf;

var context = _uOw.Context

通过上下文,您可以随意使用所需的任何方法