2014-02-19 1 views
0

내 컨트롤러에서이 표현에 문제가 있습니다. MVC 4 프로젝트에서 일하고 있는데 사용자별로 필터링 된 응용 프로그램 목록과 감사 내역에 포함 된 응용 프로그램 목록과 함께 몇 가지 감사 기록이 다시 나타납니다. 드롭 다운 목록을 사용하여 감사 로그에 필터링을 추가합니다. 드롭 다운 목록에서 선택된 항목의 appid를 사용하여 감사 로그를 감사 레코드에 대해 다시 실행하는 메소드에 대한 ajax 호출을 사용하고 반환 값만을 반환합니다. 일치하는 appid가 들어있는 레코드를 감사하십시오. 표현식에 문제가있어 필터링하기가 어렵습니다.람다 암시 적 변환 문제가 있습니까?

방법 나는 이러한 목표를 달성하기 위해 사용하고 있습니다 : 여기에 내가 지금 무엇을 가지고

[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가 만들어집니다. 이것이 뷰 모델에 매핑 된 다음 선택 목록에 채워진 이유입니다. 문제가있는 부분은 "filteredRows"변수입니다. 감사 레코드를 선택 목록의 appid와 비교하고 필터링 된 결과를 반환하려고합니다. 감사!

답변

1

내가 제대로 이해하고이에 대한 Any을 사용할 수 있습니다 appList 당신이 사이로 a.ApplicationID을해야하는 경우 :

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

심지어 "모든"사용에 대해 생각하지 않았다 주셔서 감사합니다. SO가 나를 허용하자마자 바로 표시 할 것입니다. 다시 한 번 감사드립니다! – Skrubb