2011-12-22 3 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私は私のプログラムを実行した

次に、SqlFunctions.StringConvertを使用して動作させましたが、生成されたSQL LINQが評価されていませんでした。これはサンプル出力です(1と2の代わりに '1'と '2'を比較しています)**

+0

正確に 'Int32.ToInteger(System.Object)'を使用していますか? – ivowiblo

答えて

0

なぜ、プロファイルIDを2倍にキャストしていますか?どのタイプがa.ProfessionID ofですか? 私はToIntegerメソッドを呼び出す原因となる整数への暗黙の変換があると思います。

なぜ、Arrayのアイテムを最初に整数に変換してから、クエリでintのArrayを使用しますか?

関連する問題