2013-01-16 2 views
0

SearchFilter 논리 연산자를 수행하는 방법 ANDOR 사용자가 선택한 작업을 기반으로 프로그래밍 방식으로 ??SearchFilter 논리 연산자 AND 및 OR

사용자가 다음과 같이 선택하면 "[To]ContainsSubstring'Ram' OR [To]containssubstring'lak' 수행 방법은 무엇입니까?

답변

0

개별 필터를 수식으로 정의한 다음 사용자의 선택에 따라 조합 할 수 있습니다.


편집 : 내가 뭘 제안하고하는 술어 만드는 것입니다 (지금은 사용되지 않습니다 이해하고 추천 같은 것은 기본적으로 어떤 Func을 사용하는 것입니다) 다음 식으로 그들을 결합에 적용하여 목록이 있어야합니다.

내가 여기 예 : Combine Multiple Predicates


무엇 내가 과거에했던 것은 사용자의 선택에 따라 조건을 결합하여 다음 식으로 그들을 컴파일 한 후 Linq에 대한 매개 변수로 것을 사용하는 것입니다 확장 방법.

그래서,이 컴파일 아닌 경우 반드시 예 (지금 :) 쓴 :

List<Customer> list = new List<Customer>(); 
List<Func<Customer,bool>> predicateList = new List<Func<Customer,bool>>(); 

if(/*user choice condition*/) 
{ 
    predicateList.Add(c => c.Name.Contains("test")); 
} 
if (/*user choice condition*/) 
{ 
    predicateList.Add(c => c.Name.Contains("test") || c.Description.Contains("buyer")); 
} 
//etc. 


Expression<Func<IWorkItem, bool>> filterExpression = c => whereClausePredicates.All(pred => pred(c)); 
var filteredCustomers = list.Where(filterExpression.Compile()); 
+0

감사 U 전화 그것을 위해 내가 어떤 예 dutzu.Can 귀하의 회신. – user1891567

+0

회신을 보내 주셔서 감사합니다 dutzu.How 우리는 거기에 기반으로 publicfolders에 항목을 필터링 할 수 보낸 날짜와 Recieved ?? 나는이'필터 = 새로운 SearchFilter.IsGreaterThan (ItemSchema.DateTimeSent, "28/08/12 6:34:06 PM "); '...하지만 오류 발생. 오류 - 지정된 값이 속성에 대해 유효하지 않습니다 ... 올바른 형식으로 값을 지정했습니다. – user1891567

+0

@ user1891567 당신이 문자열에 의존 할 수없는 datetime을 비교할 때, 내가 가지고있는 논리가 먼저 DateTime으로 보내진 문자열을 파싱하고 두 개를 비교하기를 바랍니다. – dutzu