为了账号安全,请及时绑定邮箱和手机立即绑定

无法隐式转换类型,存在显式转换(是否缺少强制转换?

无法隐式转换类型,存在显式转换(是否缺少强制转换?

C#
慕码人2483693 2022-08-20 17:35:50
我已经设置了一个ViewModel(以前使用ViewBag),但我在以下代码中遇到了错误,我已经研究了它,但个人无法找出我的问题:public ActionResult Index(string category, string search)    {        ProductIndexViewModel viewModel = new ProductIndexViewModel();        var products = db.Products.Include(p => p.Category);        if (!String.IsNullOrEmpty(search))        {            products = products.Where(p => p.Name.Contains(search) ||                    p.Description.Contains(search) ||                    p.Category.Name.Contains(search));            viewModel.Search = search;        }        viewModel.CatsWithCount = from matchingProducts in products                                  where matchingProducts.CategoryID != null                                  group matchingProducts by                                  matchingProducts.Category.Name into                                  catGroup                                  select new CategoryWithCount()                                  {                                      CategoryName = catGroup.Key,                                      ProductCount = catGroup.Count()                                  };        if (!String.IsNullOrEmpty(category))        {           products = products.Where(p => p.Category.Name == category);        }        viewModel.Products = products;        return View(viewModel);    }错误发生在该行的底部:viewModel.Products = products;确切的错误是“无法将类型隐式转换为 。存在显式转换(您是否缺少强制转换?)”'System.Linq.IQueryable<OnlineStore.Models.Product>''System.Linq.IQueryable<OnlineStore.ViewModels.ProductIndexViewModel>'我对使用Visual Studio非常陌生,只是想知道我必须做些什么来修复这个错误。
查看完整描述

2 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

问题出在我的ProductIndexViewModel类中。我有

public IEnumerable<ProductIndexViewModel> Products { get; set; }

而不是

public IEnumerable<Product> Products { get; set; }

感谢所有回答的人。


查看完整回答
反对 回复 2022-08-20
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

你在课堂上看起来错了ProductsProductIndexViewModel


public class ProductIndexViewModel

{

    public IQueryable<ProductIndexViewModel> Products { get; set; }

Products是一个,它实际上没有意义,可能应该是一个或IQueryableList<T>IEnumerable<T>


public List<ProductIndexViewModel> Products { get; set; }

通用参数看起来是错误的,它可能应该是或一些ViewModel,就像在ViewModel的情况下,你需要/Project到它ProductProductViewModelSelect

你可能应该在结果上打电话ToList


viewModel.Products = products.ToList();


查看完整回答
反对 回复 2022-08-20
  • 2 回答
  • 0 关注
  • 332 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号