private void ProcessMerge(StringBuilder sb, MergeSegment segment, QueryBuildInfo buildInfo, IDbLayer dbLayer) { int count = 0; if (segment.Mode == MergeSegmentMode.ParaAnd || segment.Mode == MergeSegmentMode.ParaOr) { sb.Append("("); } foreach (ISegment subSegment in segment.Segments) { if (count > 0) { switch (segment.Mode) { case MergeSegmentMode.And: case MergeSegmentMode.ParaAnd: sb.Append(" AND "); break; case MergeSegmentMode.ParaOr: case MergeSegmentMode.Or: sb.Append(" OR "); break; } } Process(sb, subSegment, buildInfo, dbLayer); count++; } if (segment.Mode == MergeSegmentMode.ParaAnd || segment.Mode == MergeSegmentMode.ParaOr) { sb.Append(")"); } }
protected T BaseOr(params T[] expressions) { MergeSegment mergeSegment; if (expressions == null || expressions.Length == 0) { mergeSegment = new MergeSegment(MergeSegmentMode.Or); return(AddSegment(mergeSegment)); } mergeSegment = new MergeSegment(MergeSegmentMode.ParaOr); foreach (T expression in expressions) { mergeSegment.AddSub(expression.RootSegment); } return(AddSegment(mergeSegment)); }