2012-05-20 76 views
0

我想通过谓词生成器通过MVC3执行查询。我得到错误谓词生成器包含

“无法将类型'System.Boolean'转换为类型'System.Object'.LINQ to Entities仅支持投射实体数据模型原语类型。”

我已经查询如下

if (!string.IsNullOrEmpty(SearchObj.EmployeeIDSortId.ToString()) && SearchObj.EmployeeIDSortId > 0) 
    { 

     string[] vals =new string[' ']; 
     if (SearchObj.EmployeeIDSortId == 1) 
     { 
      vals = new string[] { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k","l" }; 

     } 
     else if (SearchObj.EmployeeIDSortId == 2) 
     { 

      vals = new string[] { "m", "n", "o", "p", "q", "r", "s" }; 

     } 
     else if (SearchObj.EmployeeIDSortId == 3) 
     { 


      vals = new string[] { "t", "u", "v", "w", "x", "y", "z" }; 
     } 


     employeepredicate = 
      employeepredicate.And(emp => emp.EmployeeName.Substring(0, 1).ToLower().Equals(vals.Any())); 


     } 

过去了能否请你所说的其实是不对的,我想这仅仅是由于我的查询vals.Any()。

感谢

回答

1

让我作序 - 我不熟悉的And方法,但.Equals(vals.Any())不看我的权利。所以,我认为And需要一个函数返回一个布尔值。你真正寻找的是如果雇员姓名的第一个字符包含在丘壑数组中找出:

employeepredicate = employeepredicate.And( emp => vals.Contains(emp.EmployeeName.Substring(0, 1).ToLower()));

+0

感谢这么多。有效。 –

+0

@zeta - 我很高兴! :) – mfras3r