【问题标题】:How to select an enum to a new list?如何选择一个枚举到一个新列表?
【发布时间】:2012-03-06 05:07:58
【问题描述】:
var menuQuery = repository.MenuMasters.OrderBy(c => c.Position).Select(c => new { ID = c.MenuMasterID, Position = (MenuItemPosition)c.Position + " - " + c.SitePage.Title });
ViewBag.ParentID = new SelectList(menuQuery, "ID", "Position", selectedParentId);


public int Position { get; set; }
    public MenuItemPosition MenuPosition {
        get { return (MenuItemPosition)Position; }
        set { Position = (int)value; }
    }

public enum MenuItemPosition {
    Top = 1, Main = 2, Footer = 3
}

我收到一条错误消息,提示“无法将类型 'Type Name' 转换为类型 'Type Name'。LINQ to Entities 仅支持转换 Entity Data Model 原始类型。”

MenuItemPosition 是“枚举”,标题是“字符串”

我该如何解决这个问题?非常感谢~!

【问题讨论】:

    标签: linq asp.net-mvc-3 c#-4.0


    【解决方案1】:

    我认为您需要在 OrderBy 之后添加 .ToList,因为 Linq to Entities 不支持字符串连接。所以您的查询将类似于:

    var menuQuery = repository.MenuMasters.OrderBy(c => c.Position).ToList().Select(c => new { ID = c.MenuMasterID, Position = ((MenuItemPosition)c.Position).convertToString() + " - " + c.SitePage.Title });
    

    【讨论】:

      【解决方案2】:

      试试类似的东西

      var menuQuery = repository.MenuMasters.OrderBy(c => c.Position).Select(c => new { ID = c.MenuMasterID, Position = c.Position.ToString() + " - " + c.SitePage.Title });
      

      【讨论】:

      • 你真的想把枚举名放在那里吗?你能用枚举更新你的问题吗
      猜你喜欢
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      • 2016-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多