sunil mali Ответов: 1

Ошибка запроса Linq при выборке меню


Я могу получить список меню в var, но когда я пытаюсь привести его к правильному объекту, он не работает,

Исключение: приведенный ниже код работает и выдает меню в var


//var pageObject = (from op in gc.Menus
           //                  join mr in gc.MenuRights on op.MenuId equals mr.MenuId
           //                  where mr.LevelId == LevelId
           //                  select new { op });



Приведенный ниже код не работает и выдает ошибку as,не может неявно преобразовать тип
System.collections.Generic.List<<anonymous type: Geem.Models.Menu>> to System.collections.Generic.List<Geem.Models.Menu>


Что я уже пробовал:

List<Menu> mList = (from op in gc.Menus
          join mr in gc.MenuRights on op.MenuId equals mr.MenuId
          where mr.LevelId == LevelId
          select new { op }).ToList();

1 Ответов

Рейтинг:
9

F-ES Sitecore

Проблема в том, что вы используете анонимные типы (new { ... }) когда в этом нет необходимости. Анонимные типы имеют различные ограничения и причуды, поэтому не используйте их, если вам действительно не нужно.

Это тот же самый код без использования анонимных типов

List<Menu> mList = (from op in gc.Menus
          join mr in gc.MenuRights on op.MenuId equals mr.MenuId
          where mr.LevelId == LevelId
          select op).ToList();


sunil mali

Здравствуйте Сэр,

Код выдает ошибку как,
op-это переменная, но используемая как тип.

Пожалуйста, предложите.

sunil mali

Теперь он работает, я только что удалил новое ключевое слово из вашего решения, я знаю, что это опечатка, потому что вы объяснили в своем решении.
Огромное спасибо.
Также Спасибо за объяснение того, что вызывает эту проблему.

F-ES Sitecore

Извините за это :o я обновил свой оригинальный пост

sunil mali

Все в порядке, сэр, я понял, что вы хотели сказать.
Итак, послание было передано. :)