Hi zd, and Welcome to the forums
About your question. You can either:
A. Use &, | and ()
IPredicateExpression B = ((Table1Fields.Foo == "One") & (Table1Fields.Bar == "Two"))
| (Table2Fields.Bar2 == "Three");
or
B. Use .AddWithOr and .AddWithAnd methods of the PredicateExpression class.
IPredicateExpression filter1 = new PredicateExpression();
filter.Add(TableFields.Foo=="One");
filter.Add(Table1Fields.Bar == "Two");
IPredicateExpression filter2 = new PredicateExpression();
filter2.Add(Table2Fields.Bar2 == "Three");
IPredicateExpression mainFilter = new PredicateExpression();
mainFilter.Add(filter1);
mainFilter.AddWithOr(filter2);
or
C. Mixed:
IPredicateExpression filter1 = new PredicateExpression();
filter.Add(TableFields.Foo=="One" & Table1Fields.Bar == "Two");
filter.AddWithOr(Table2Fields.Bar2 == "Three");
For more info read Constructing Predicate Expressions in the documentation.
Hope that helps