2015-11-05 4 views
4

У меня есть отфильтрованный список, который возвращает все distinctIds из MenuTableИспользование содержит в LINQ

var _parentList = _employee.Designation.Role.MenuRoles 
               .Select(x => new 
               { 
                MenuParentID = x.Menu.ParentID 
               }) 
               .DistinctBy(x => x.MenuParentID) 
               .OrderBy(x => x.MenuParentID) 
               .ToList(); 

Я хочу, чтобы выбрать все элементы из menutable, который находится в _parentList

Это то, что я пытался и ошибка приходит на _parentList.Contains(x.Id), который говорит Best overloaded match for System.Generic.contains has some invalid arguments.

MenuParentList = _db.Menus.Where(x => _parentList.Contains(x.Id)) 
          .Select(x => new SMS.Models.ViewModel.DashboardVM.MenuParent 
          { 
           MenuParentID = x.Id, 
           MenuParentName = x.MenuName 
          }) 
          .ToList() 

Любая помощь будет оценена

+1

где проблема? –

+1

Какая у вас проблема? –

+0

Я не вижу никаких проблем с вашим кодом. Он должен работать. –

ответ

9

Cf. этот код:

.Select(x => new 
{ 
    MenuParentID = x.Menu.ParentID 
}) 

Это приводит список анонимных объектов с одним свойством называется MenuParentID, вместо списка целых чисел. Компилятор создает тип для вас, что структурно выглядит следующим образом (обратите внимание, что компилятор генерирует неиспользуемое имя класса за кулисами вместо AnonymousType1, но вы получите идею):

class AnonymousType1 
{ 
    public int MenuParentID {get;set;} 
} 

И _parentList был бы тип List<AnonymousType1>.

Настройте ваш код следующим образом:

var _parentList = _employee.Designation.Role.MenuRoles 
         .Select(x => x.Menu.ParentID) 
         .Distinct() 
         .OrderBy(id => id) 
         .ToList(); 

Теперь _parentList имеет тип List<int>.

Вы можете прочитать больше о концепции анонимных типов на MSDN: https://msdn.microsoft.com/en-us/library/bb397696.aspx

+0

Удивительный помощник .. Спасибо за ваш отзыв .. – ksg

+0

Если возможно, посмотрите в [этот вопрос] (http://stackoverflow.com/questions/33542818/dynamic-menu-from-database) – ksg

Смежные вопросы