private OrPredicateSegment MergeOrPredicateSegment() { OrPredicateSegment result = new OrPredicateSegment(); result.GetAndPredicates().AddAll(GetAndPredicates(_left)); result.GetAndPredicates().AddAll(GetAndPredicates(_right)); return(result); }
private OrPredicateSegment MergeAndPredicateSegment() { OrPredicateSegment result = new OrPredicateSegment(); ICollection <AndPredicateSegment> leftPredicates = GetAndPredicates(_left); ICollection <AndPredicateSegment> rightPredicates = GetAndPredicates(_right); AddAndPredicates(result, leftPredicates, rightPredicates); return(result); }
private void AddAndPredicates(OrPredicateSegment orPredicateSegment, ICollection <AndPredicateSegment> leftPredicates, ICollection <AndPredicateSegment> rightPredicates) { if (0 == leftPredicates.Count && 0 == rightPredicates.Count) { return; } if (0 == leftPredicates.Count) { orPredicateSegment.GetAndPredicates().AddAll(rightPredicates); } if (0 == rightPredicates.Count) { orPredicateSegment.GetAndPredicates().AddAll(leftPredicates); } foreach (var leftPredicate in leftPredicates) { foreach (var rightPredicate in rightPredicates) { orPredicateSegment.GetAndPredicates().Add(CreateAndPredicate(leftPredicate, rightPredicate)); } } }