2016-12-31 15 views
0
public static IList<NameValueCore> FindDepartment(string search) 
{ 
    return Repository<Department> 
      .Find(p =>(p.Name.Contains(search)) && (p.RegistrationEntityType.Id == ((int)Session["SelectMenu"] == 12 ? 1 : (int)Session["SelectMenu"]))) 
      .Take(40) 
      .ToList() 
      .Select(p => new NameValueCore(p.Name, p.Id.ToString())) 
      .ToList(); 
} 

本節產生錯誤:(p.RegistrationEntityType.Id == ((int)Session["SelectMenu"] == 12 ? 1 : (int)Session["SelectMenu"])不能轉換lambda表達式鍵入部門

+1

有什麼錯誤? – series0ne

+0

無論實際的錯誤是什麼(鑄造錯誤,EF投訴無效操作,缺少會話變量),將這樣的代碼放在查詢中是一個糟糕的主意。該表達式與查詢無關。提取並提前評估並使用得到的菜單值 –

回答

0

操作前檢查Session

public static IList<NameValueCore> FindDepartment(string search) 
    { 
     int selectMenu = 1; 
     if(Session["SelectMenu"]!=null) 
     { 
      selectMenu=(int)Session["SelectMenu"]; 
     } 

     return Repository<Department> 
          .Find(p =>(p.Name.Contains(search)) && (p.RegistrationEntityType.Id == (selectMenu == 12 ? 1 : selectMenu))) 
          .Take(40) 
          .ToList() 
          .Select(p => new NameValueCore(p.Name, p.Id.ToString())) 
          .ToList(); 
    } 
+0

只有代碼答案沒有幫助,通常會被低估。你改變了什麼?這是如何幫助解決問題的?請解釋爲什麼這是一個有效的答案 –

+0

另請注意,如果該'Repository'隱藏EF,則此查詢將*失敗,因爲三元運算符不能轉換爲SQL –