不能隐式转换type子菜单

本文关键字:SubMenu 菜单 type 转换 不能 | 更新日期: 2023-09-27 18:02:06

我试图通过ContentTypeID选择所有记录

这是我要使用的代码

public ActionResult LoadData(int contentTypeId)
    {
        List<ProductContent> productContentList = (from pc in db.ProductContents
                                                   where pc.ContentTypeID == contentTypeId
                                                   select pc).ToList();
        ViewBag.ProductContents = productContentList;

        SubMenu subMenu = (from sm in db.SubMenuList
                                 where sm.ContentTypeID == contentTypeId
                                 select sm);
        SubMenuItem subMenuItemList = (from smi in db.SubMenuItems
                                       where smi.ContentTypeID == contentTypeId
                                       select smi);

不能隐式转换type<SubMenu>子菜单

假设db.SubMenuListSubMenu的集合,那么当您这样做时:

from sm in db.SubMenuList
     where sm.ContentTypeID == contentTypeId
     select sm

您没有选择单个记录(即使只有一个SubMenuContentTypeID == contentTypeId),您正在选择与谓词匹配的所有项目的集合。它可能是一个只有一个项目的集合。它可能永远只能是一个包含单个元素的集合,但编译器不知道这一点,也不打算假定它是一个集合。

如果只有一个匹配,那么如下:

    SubMenu subMenu = (from sm in db.SubMenuList
                             where sm.ContentTypeID == contentTypeId
                             select sm).First();

应该工作。或者,如果项可能缺失,则:

    SubMenu subMenu = (from sm in db.SubMenuList
                             where sm.ContentTypeID == contentTypeId
                             select sm).FirstOrDefault();

如果没有项目符合您的条件,将subMenu设置为null