2014-02-19 76 views
0

在我的控制器中遇到此表達式的問題。我正在開發一個MVC 4項目,並且我還有一些審計記錄,以及每個用戶已經過濾的應用程序列表,以及每個應用程序在他們的審計歷史記錄中的列表。我使用下拉列表向審計日誌添加篩選,該列表使用ajax調用方法,該方法使用下拉列表中選定項的appid針對審計記錄重新運行審計日誌,並僅返回包含匹配的appid的審計記錄。有一個表達式的問題,讓它過濾雖然。以下是我現在所擁有的:Lambda隱式轉換的麻煩?

的方法我使用來實現:

[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的過濾在後端完成時調用數據庫被製成。這就是爲什麼它被映射到視圖模型,然後塞入選擇列表。我遇到的部分是「filteredRows」變量。我試圖將auditrecords與選擇列表中的appid進行比較並返回過濾結果。謝謝!

回答

1

如果我的理解是正確的,你需要a.ApplicationID能躋身appList可以使用Any此:

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

我甚至沒有想到使用「任意」,向你表示感謝。只要SO讓我這麼做,將其標記爲正確。再一次,謝謝你! – Skrubb