How do i filter like (Type=A OR Type=B ) AND (StatusId=1 OR StatusId=2)

Posts   
 
    
Anthony
User
Posts: 155
Joined: 04-Oct-2006
# Posted on: 21-Dec-2007 07:40:18   

(Type=A OR Type=B ) AND (StatusId=1 OR StatusId=2)

Dim bucket As New RelationPredicateBucket()

bucket.PredicateExpression.Add(New FieldCompareValuePredicate(CallFields.Type, Nothing, ComparisonOperator.Equal, A)) bucket.PredicateExpression.AddWithOR(New FieldCompareValuePredicate(CallFields.Type, Nothing, ComparisonOperator.Equal, B))

bucket.PredicateExpression.Add(New FieldCompareValuePredicate(CallFields.StatusId, Nothing, ComparisonOperator.Equal, 1)) bucket.PredicateExpression.AddWithOR(New FieldCompareValuePredicate(CallFields.StatusId, Nothing, ComparisonOperator.Equal, 2))

The above code doesn't what i want it to do. What am i doing wrong?

DvK
User
Posts: 323
Joined: 22-Mar-2006
# Posted on: 21-Dec-2007 10:07:33   

Maybe this will do better....

bucket.PredicateExpression.Add(CallFields.Type = A Or CallFields.Type = B) bucket.PredicateExpression.AddWithAnd(CallFields.StatusId = 1 Or CallFields.StatusId = 2)

Walaa avatar
Walaa
Support Team
Posts: 14995
Joined: 21-Aug-2005
# Posted on: 21-Dec-2007 10:27:04   

Same as doing the following:

PredicateExpression exp1 = new PredicateExpression();
exp1.Add(Type == A);
exp1.AddWithOr(Type == B);

PredicateExpression exp2 = new PredicateExpression();
exp2.Add(StatusId == 1);
exp2.AddWithOr(StatusId == 2);

bucket.PredicateExpression.Add(exp1);
bucket.PredicateExpression.AddWithAnd(exp2);
Anthony
User
Posts: 155
Joined: 04-Oct-2006
# Posted on: 21-Dec-2007 10:41:05   

thanks..problem solved simple_smile

DvK
User
Posts: 323
Joined: 22-Mar-2006
# Posted on: 21-Dec-2007 11:02:10   

I like the short version....smile

Walaa avatar
Walaa
Support Team
Posts: 14995
Joined: 21-Aug-2005
# Posted on: 21-Dec-2007 11:05:40   

I like the short version....

Me too of-course, the longer version is just for explanation.