2014-02-19 2 views
0

Возникли проблемы с этим выражением в моем контроллере. Я работаю над проектом MVC 4, и у меня есть несколько записей аудита, а также список приложений, которые были отфильтрованы для каждого пользователя, и за то, что приложения находятся в истории аудита. Я добавляю фильтрацию в журнал аудита с помощью выпадающего списка, который использует вызов ajax для метода, который повторно запускает журнал аудита с добавлением выбранного элемента в выпадающем списке по аудиторским записям и возвращает только записи аудита, содержащие это подходящее приложение. У вас проблема с выражением, чтобы заставить его фильтровать. Вот то, что я прямо сейчас:Лямбда неявная конвертация проблемы?

метод я использую для достижения этой цели:

[HttpPost] 
    public ActionResult GetRows(String username, int page, int? appId) 
    { 

     User user = UserManager.GetUser(username); 
     var filteredApps = UserManager.GetUserAppListFromAuditRecord(user); 
     List<ApplicationListView> appList = filteredApps.Select(Mapper.DynamicMap<ApplicationListView>).ToList(); 
     List<SelectListItem> appsList = appList.Select(appItem => new SelectListItem 
     { 
      Text = appItem.Name, 
      Value = appItem.ID.ToString() 
     }).ToList(); 
     ViewData["UserAppList"] = appsList; 
     SearchInfo searchInfo = new SearchInfo { UserName = username }; 
     var auditRecord = _userHelper.GetAuditInfo(searchInfo, page); 
     **var filteredRows = auditRecord.AuditRecords.Where(a => a.ApplicationID = appList.Select(t => t.ID).ToList();** 
     return PartialView(auditRecord); 

    } 

Лучше сообщить Вам, что фильтрация applist для каждого пользователя осуществляется на внутреннем интерфейсе, когда вызов db производится. поэтому он сопоставляется с viewmodel, а затем добавляется в список избранных. У меня есть проблема с переменной «filterRows». Я пытаюсь сравнить аудиторские записи с приложением из списка выбора и возвращать отфильтрованные результаты. Благодаря!

ответ

1

Если я понял правильно, и вы должны a.ApplicationID быть среди appList вы можете использовать Any для этого:

var filteredRows = auditRecord.AuditRecords.Where(a => appList.Any(t => t.ID == a.ApplicationID)).ToList(); 
+0

Я даже не думаю об использовании «Любой», спасибо вам за это. Отметьте это как можно скорее, как только SO позволит мне. Еще раз спасибо! – Skrubb

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