c# - 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
。
解决方案
为什么你不能只使用 DbContext 而不应用 IPagedList
IUnitOfWork<YourContext> _uOf;
var context = _uOw.Context
通过上下文,您可以自由使用任何您想要的方法
推荐阅读
- python - 如何在scrapy输出中保留换行符?
- javascript - 使用js和jq滚动播放和暂停两个或多个视频的代码
- html - 如何在调整 flexbox 上的浏览器高度时启用滚动
- android - Android Play 商店 - 将应用可用年龄从 3+ 更改为 18+
- shopware - 如何在 shopware 6 中的实体相关事件订阅者中访问 Shopware\Core\System\SalesChannel\SalesChannelContext?
- javascript - 错误:未捕获的类型错误:调用 storage.set 时出错(对象项,可选函数回调)Chrome 扩展
- r - 比较R中同一列中的值
- c - 如何在 Webots 中将无人机锁定在所需的高度?
- javascript - JSON数据无法在javascript中使用fs
- java - 在java中将有符号字节转换为无符号字节然后转换为int16?