2011-12-22 4 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를 두 배로 캐스팅합니까? 어떤 유형의 .ProfessionID of? ToInteger 메서드를 호출하는 정수로 암시 적 변환이 있다고 생각합니다.

왜 배열의 항목을 정수로 변환 한 다음 쿼리에서 int 배열을 사용합니까?