2011-12-22 93 views
2
public static IQueryable<SearchProfile> FilterData(string Filter, Repository<SearchProfileContext> dc) 
    { 
     IQueryable<SearchProfile> data = null; 
     var predicate = PredicateBuilder.True<SearchProfile>(); 
     Filter = ExcludedParam(Filter); 
     if (!string.IsNullOrEmpty(Filter))`enter code here` 
     { 
      var stringToSplit = Filter;`enter code here` 
      List<string[]> arrays = new List<string[]>(); 
      var primeArray = stringToSplit.Split('|'); 
      for (int i = 0; i < primeArray.Length; i++) 
      { 
       string first = primeArray[i]; 
       if (first.Contains("chkOrientation") == true) 
       { 
        string[] Array = first.Replace("chkOrientation=", "").Split(','); 
        predicate = predicate.And(a => Array.Contains(a.OrientaionID.ToString())); 
       } 
       if (first.Contains("chkProfession") == true) 
       { 
        string[] Array = first.Replace("chkProfession=", "").Split(','); 
        **predicate = predicate.And(a => Array.Contains(SqlFunctions.StringConvert((Double)a.ProfessionID)));** 
       } 
      } 
      data = dc.Select<SearchProfile>().Where(predicate).Distinct(); 
      return data; 
     } 
     data = (from a in dc.Select<SearchProfile>().Where(a => a.PersonID > 0) select a).Distinct(); 
     return data; 
    } 

當我跑我的程序,我得到這個討厭的錯誤如下:LINQ的PredicateBuilder

LINQ到實體無法識別方法Int32 ToInteger(System.Object)方法,該方法不能被翻譯成店表達。

然後,我用SqlFunctions.StringConvert使它工作,但生成的SQL LINQ沒有評估。這是示例輸出(它比較'1'和'2'而不是1和2)**

+0

你究竟在哪裏使用'Int32.ToInteger(System.Object)'? – ivowiblo 2011-12-23 05:21:38

回答

0

爲什麼要將a.ProfessionID加倍?什麼類型是a.ProfessionID的? 我認爲有隱式轉換爲整數,這會導致調用ToInteger方法。

爲什麼不將數組中的項目轉換爲整數,然後在查詢中使用整數?

相關問題