无法将类型<submenu>隐式转换为SubMenu

时间:2015-07-11 04:09:59

标签: c# linq

我尝试按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);

1 个答案:

答案 0 :(得分:1)

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

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

您没有选择单个记录(即使SubMenu只有一个ContentTypeID == 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