错误:无法隐式转换类型

本文关键字:转换 类型 错误 | 更新日期: 2023-09-27 17:49:58

我正在一个项目上工作,我有一个关于转换类型的问题。我想为我的项目创建一个简单的搜索,但是它一直在询问Ienumerable类型,老实说我不明白。请帮助。

问题:

错误1无法隐式转换类型"System.Collections.Generic"。IEnumerable'到'PagedList.IPagedList'。存在显式转换(您是否缺少强制转换?)C:'Users'Asus'Documents'Visual Studio 2012'Projects'Nordstromapp'Nordstromapp'Controllers'ProductController.cs 38 24 Nordstromapp

我代码:

{
    NordstromEntities _db;
    public ProductController()
    {
        _db = new NordstromEntities();
    }
    //
    // GET: /Product/
    public ActionResult Index(string sortOrder, string CurrentSort, int? page, string searchString)
    {
        int pageSize = 10;
    int pageIndex = 1;
    pageIndex = page.HasValue ? Convert.ToInt32(page) : 1;
    ViewBag.CurrentSort = sortOrder;
    sortOrder = String.IsNullOrEmpty(sortOrder) ? "ID" : sortOrder;
    IPagedList<Product_list> products = null;

    if (!String.IsNullOrEmpty(searchString))
    {
        products = products.Where(m => m.ID.ToUpper().Contains(searchString.ToUpper())
                               || m.Product_name.ToUpper().Contains(searchString.ToUpper()));
    }
    switch (sortOrder)
    {
        case "ID":
            if(sortOrder.Equals(CurrentSort))  
                products = _db.Product_list.OrderByDescending
                        (m => m.ID).ToPagedList(pageIndex, pageSize);   
            else
                products = _db.Product_list.OrderBy
                        (m => m.ID).ToPagedList(pageIndex, pageSize);   
            break;
        case "Product_name":
            if (sortOrder.Equals(CurrentSort))
                products = _db.Product_list.OrderByDescending
                        (m => m.Product_name).ToPagedList(pageIndex, pageSize);
            else
                products = _db.Product_list.OrderBy
                        (m => m.Product_name).ToPagedList(pageIndex, pageSize);
            break;
        case "Product_category":
            if (sortOrder.Equals(CurrentSort))
                products = _db.Product_list.OrderByDescending
                        (m => m.Product_category).ToPagedList(pageIndex, pageSize);
            else
                products = _db.Product_list.OrderBy
                        (m => m.Product_category).ToPagedList(pageIndex, pageSize);
            break;
        case "Price":
            if (sortOrder.Equals(CurrentSort))
                products = _db.Product_list.OrderByDescending
                        (m => m.Price).ToPagedList(pageIndex, pageSize);
            else
                products = _db.Product_list.OrderBy
                        (m => m.Price).ToPagedList(pageIndex, pageSize);
            break;

    }
    return View(products);
}

错误:无法隐式转换类型

虽然products确实是IPagedList<Product_List>类型,但在IPagedList<Product_List> 实例上调用.Where()返回IEnumerable<Product_List>,不能隐式转换。注意这里是如何执行转换的:

products = _db.Product_list.OrderByDescending(m => m.ID)
                           .ToPagedList(pageIndex, pageSize);

您只需要在.Where()调用后执行相同的转换:

products = products.Where(m => m.ID.ToUpper().Contains(searchString.ToUpper()) ||
                               m.Product_name.ToUpper().Contains(searchString.ToUpper()))
                   .ToPagedList(pageIndex, pageSize);