2014-02-28 34 views
0

ASP.NET MVC搜索過濾器是否有可能通過對INT搜索過濾視圖中的記錄?它的話,但一個字符串,但是當我嘗試任何適應它來繪製匹配一個int所有的記錄,我得到錯誤:DbComparisonExpression需要具有可比類型的參數。參考返回視圖。通過INT

控制器:

public ActionResult Index(string sortOrder,string search) 
     { 
     ViewBag.TimeSortParam = String.IsNullOrEmpty(sortOrder) ? "Time_desc" : ""; 
     ViewBag.PrioritySortParam = sortOrder == "Priority" ? "Priority_desc" : ""; 
     var incidents = from s in db.Incidents.Include(i => i.Defect).Include(i => i.Operator) 
         select s; 

     if (!String.IsNullOrEmpty(search)) 
     { 
      incidents = incidents.Where(s => s.IncidentID.Equals(search)); 
     } 
return View(incidents.ToList()); 

查看

Find by id: @Html.TextBox("Search") 

我能看到的問題是我使用的是字符串,但我不能找到INT

+0

是什麼類型'Incident.IncidentID'? –

+0

它是一個INT。我已經試過當場打死東西一樣樣指數(字符串中將sortOrder,詮釋搜索)prehaps像如果(搜索== NULL)解決方案 – user3189899

回答

0

的解決方案在你的發言,改變於:

s.IncidentID==Convert.ToInt32(search)

+0

了「LINQ到實體無法識別方法‘的Int32 ToInt32(System.String)’的方法,並這個方法不能被翻譯成商店表達式。「 @ return View(incidents.ToList()); – user3189899

0

如果有人有興趣這個工作,雖然我不知道它的最有效的方式通過一個int過濾:

public ActionResult Index(string sortOrder, int? search) 
    { 
     ViewBag.TimeSortParam = String.IsNullOrEmpty(sortOrder) ? "Time_desc" : ""; 
     ViewBag.PrioritySortParam = sortOrder == "Priority" ? "Priority_desc" : ""; 
     var incidents = from s in db.Incidents.Include(i => i.Defect).Include(i => i.Operator) 
         select s; 
     if (search != null) 
     { 
      incidents = incidents.Where(s => s.IncidentID == (search)); 
     }} 
return View(incidents.ToList());