Как выбрать перечисление в новый список? - PullRequest
0 голосов
/ 06 марта 2012
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
}

Я получил сообщение об ошибке: «Невозможно привести тип« Имя типа »к типу« Имя типа ». LINQ to Entities поддерживает приведение только типов примитивов модели данных сущностей».

MenuItemPosition - "Enum", заголовок - "string"

Как я могу это исправить? Большое спасибо ~!

Ответы [ 2 ]

1 голос
/ 06 марта 2012

Я думаю, вам нужно добавить .ToList после OrderBy, так как конкатенация строк не поддерживается с Linq для Entities .. Таким образом, ваш запрос будет выглядеть примерно так:

var menuQuery = repository.MenuMasters.OrderBy(c => c.Position).ToList().Select(c => new { ID = c.MenuMasterID, Position = ((MenuItemPosition)c.Position).convertToString() + " - " + c.SitePage.Title });
0 голосов
/ 06 марта 2012

Попробуйте что-то вроде

var menuQuery = repository.MenuMasters.OrderBy(c => c.Position).Select(c => new { ID = c.MenuMasterID, Position = c.Position.ToString() + " - " + c.SitePage.Title });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...