C# 无法强制转换类型为';System.Data.Entity.Infrastructure.DbQuery';输入';PagedList.IPagedList';

C# 无法强制转换类型为';System.Data.Entity.Infrastructure.DbQuery';输入';PagedList.IPagedList';,c#,asp.net-mvc,entity-framework-6,pagedlist,C#,Asp.net Mvc,Entity Framework 6,Pagedlist,我正在尝试对ASP.NET MVC 5应用程序使用分页。 我用过 我已经在一个简单的对象中正确地实现了它,但在用一个更复杂的对象实现它时遇到了问题。例如,当我在论坛上发表帖子和评论时 我的模型具有以下结构 public class PublicReport { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int PublicReportID { get; set; } pu

我正在尝试对ASP.NET MVC 5应用程序使用分页。 我用过 我已经在一个简单的对象中正确地实现了它,但在用一个更复杂的对象实现它时遇到了问题。例如,当我在论坛上发表帖子和评论时

我的模型具有以下结构

public class PublicReport
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int PublicReportID { get; set; }

    public string Title { get; set; }       
    ...
    public virtual Institutions Institution { get; set; }
    ...
}   

public class Institutions
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int InstitutionID { get; set; }
    public string Name { get; set; }
    ...
}
控制器中包含以下代码

public ActionResult ListReports(int? page)
{
    var pageNumber = page ?? 1;     
    var listOfReports = db.PublicReport.OrderByDescending(d => d.CreatedDate).Where(c => c.CategoryId == 1).ToList();
    listOfReports.ToPagedList(pageNumber, 3);
    return View("ReportList", listOfReports);
}
在视图(PartialView)中,相关部分是

@model IEnumerable<RENJK.Models.PublicReport>

@using PagedList.Mvc;
@using PagedList;   

@foreach (var item in Model)
{
    <div class="consult-post-sec">
        <div class="row">
            <div class="col-sm-12">
                <p>@Html.DisplayFor(modelItem => item.Title)</p>
                <div class="consult-posts-by">
                    @Html.DisplayFor(modelItem => item.Institution.Name)
                </div>
            </div>
        </div>
    </div>
}

@Html.PagedListPager((IPagedList)Model, page => Url.Action("Index", new { page }), PagedListRenderOptions.OnlyShowFivePagesAtATime) 
@model IEnumerable
@使用PagedList.Mvc;
@使用页面列表;
@foreach(模型中的var项目)
{
@DisplayFor(modeleItem=>item.Title)

@DisplayFor(modelItem=>item.Institution.Name) } @PagedListPager((IPagedList)模型,page=>Url.Action(“Index”,new{page}),pagedListRenderopions.OnlyShowFivePagesAtime)
我得到的错误是

无法将类型为“System.Collections.Generic.List`1[RENJK.Models.PublicReport]”的对象强制转换为类型为“PagedList.IPagedList”

问题似乎出现在我想显示ListPager的代码行中的视图中,因为如果我删除它,错误将不会显示


在这种情况下我能做什么?

您没有将
ToPagedList()
的结果赋给变量(因此没有返回
IPagedList
,只返回
IEnumerable
)。将代码更改为

public ActionResult ListReports(int? page)
{
    var pageNumber = page ?? 1;     
    var listOfReports = db.PublicReport.OrderByDescending(d => d.CreatedDate).Where(c => c.CategoryId == 1).ToList();
     var pagedList = listOfReports.ToPagedList(pageNumber, 3); // modify
     return View("ReportList", pagedList ); // modify
 }
请注意,视图中的模型应为

@model IPagedList<RENJK.Models.PublicReport>

非常感谢。我认为ToPagedList直接作用于报表列表
@Html.PagedListPager(Model, page => Url.Action(....`