2016-12-31 46 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 –