internal WSFilter Reduce() { WSCombineFilter cFilter = new WSCombineFilter(Mode, Negate); if (!IsEmpty) { foreach (WSFilter child in this) { WSFilter reduced = (child is WSCombineFilter) ? ((WSCombineFilter)child).Reduce() : child; if (reduced != null) { if (reduced is WSCombineFilter && ((WSCombineFilter)reduced).Any() && ((WSCombineFilter)reduced).Mode == Mode && !((WSCombineFilter)reduced).Negate) { cFilter.SaveRange(((WSCombineFilter)reduced)); } else { cFilter.Save(reduced); } } } } return(!cFilter.Any() ? null : (cFilter.Count == 1 && !cFilter.Negate) ? cFilter[0] : cFilter); }
public override WSFilter GetFieldFilter(MetaFunctions CFunc, WSTableParam param, Expression parent, int level, string state = null, bool?negate = null) { try { WSCombineFilter filter = new WSCombineFilter(WSCombineFilter.SQLMode.AndAlso); filter.SaveRange(Value.Select(x => x.GetFieldFilter(CFunc, param, parent, level, state, negate)).ToList()); /*DONT FORVARD 'negate' parameter to avoid complicatency*/ return(filter.Any() ? (filter.Count == 1 && !filter.Negate) ? filter.FirstOrDefault() : filter : null); } catch (Exception e) { WSStatus status = WSStatus.NONE.clone(); CFunc.RegError(GetType(), e, ref status); } return(null); }
public override WSFilter GetOptionFilter(MetaFunctions CFunc, Expression parent, int level, string state = null, bool?negate = null) { try { WSCombineFilter filter = new WSCombineFilter(WSCombineFilter.SQLMode.OrElse, negate); filter.SaveRange(Value.Select(x => x.GetOptionFilter(CFunc, parent, level, state, null)).ToList()); return(filter.Any() ? (filter.Count == 1 && !filter.Negate) ? filter.FirstOrDefault() : filter : null); } catch (Exception e) { WSStatus status = WSStatus.NONE.clone(); CFunc.RegError(GetType(), e, ref status); } return(null); }