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));
         }
     }
 }