2012-05-20 3 views
0

Я пытаюсь выполнить запрос через MVC3 с помощью построителя предикатов. Я получаю ошибкуPredicate builder содержит

«Невозможно ввести тип« System.Boolean »для ввода« System.Object ». LINQ to Entities поддерживает только листинг примитивных типов данных Entity Data Model».

Я запрос принят, как показано ниже

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 выполняет функцию, возвращающую bool. То, что вы действительно ищете, чтобы узнать, если первый символ в имени сотрудника содержится в массиве Vals:

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

+0

спасибо так много. это сработало. –

+0

@zeta - Я рад! :) – mfras3r