错误:无法隐式转换类型
本文关键字:转换 类型 错误 | 更新日期: 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);