public QueryFilterBooleanOperator(QueryFilterClause arg1, QueryFilterClause arg2) { if (arg1 is QueryFilterBooleanOperator) { Child1 = arg1 as QueryFilterBooleanOperator; } else { Argument1 = arg1 as QueryFilterCondition; } if (arg2 is QueryFilterBooleanOperator) { Child2 = arg2 as QueryFilterBooleanOperator; } else { Argument2 = arg2 as QueryFilterCondition; } }
public void AddFilterCondition(QueryFilterClause filter, bool useOr = false) { var res = filter; if (res == null) { return; } if (Filter == null) { Filter = res is QueryFilterBooleanOperator ? res as QueryFilterBooleanOperator : new QueryFilterBooleanOperator(res, null); return; } QueryFilterClause cleanFilter; if (Filter.Operator != QueryFilterBooleanOperator.not) { if (Filter.Child1 == null && Filter.Argument1 == null) { cleanFilter = Filter.Argument2 as QueryFilterClause ?? Filter.Child2; } else if (Filter.Child2 == null && Filter.Argument2 == null) { cleanFilter = Filter.Argument1 as QueryFilterClause ?? Filter.Child1; } else { cleanFilter = Filter; } } else { cleanFilter = Filter; } Filter = new QueryFilterBooleanOperator(cleanFilter, res); if (useOr) { Filter.Operator = QueryFilterBooleanOperator.or; } }