public FltGroupExprData(eAndOrJoin andOr, params FilterExpressionData[] filters) { this.AndOr = andOr; FilterExpressions = new List<FilterExpressionData>(); foreach (FilterExpressionData flt in filters) { if(flt!=null) FilterExpressions.Add(flt); } }
private static FilterExpressionData fromXmlGroup(XElement xml) { eAndOrJoin andor = xml.AttributeAsString("Operator").ToEnum <eAndOrJoin>(eAndOrJoin.And); FltGroupExprData flt = new FltGroupExprData(andor); flt.Negate = xml.AttributeAsBool("Negate", false); foreach (var sub in xml.Elements()) { flt.FilterExpressions.Add(FromXml(sub)); } return(flt); }
public FltGroupExprData(eAndOrJoin andOr, params FilterExpressionData[] filters) { this.AndOr = andOr; FilterExpressions = new List <FilterExpressionData>(); foreach (FilterExpressionData flt in filters) { if (flt != null) { FilterExpressions.Add(flt); } } }
public static FilterExpressionData JoinFilters(eAndOrJoin andOrJoin, params FilterExpressionData[] filters) { List <FilterExpressionData> lFilters = filters.Distinct <FilterExpressionData>().ToList <FilterExpressionData>(); lFilters.RemoveAll(item => item == null); if (lFilters.Count == 0) { return(new FltGroupExprData(andOrJoin)); //return empty and group filter } if (lFilters.Count == 1) { return(lFilters[0].Clone()); //return the only provided filter } FltGroupExprData groupFilter = null; foreach (var flt in lFilters)//check if in collection already exist an and filter { if (flt is FltGroupExprData) { groupFilter = flt as FltGroupExprData; if (groupFilter.AndOr == andOrJoin) { break; } else { groupFilter = null; } } } if (groupFilter == null) { return(Filter.And(new FltGroupExprData(andOrJoin, lFilters.ToArray()))); } else //if yes, add to him the rest expression and return it. { lFilters.Remove(groupFilter); groupFilter = groupFilter.Clone() as FltGroupExprData; foreach (var flt in lFilters) { if (!groupFilter.FilterExpressions.Contains(flt)) { groupFilter.FilterExpressions.Add(flt.Clone()); } } return(groupFilter); } }
public static FilterExpressionData GroupEqual(eAndOrJoin join, params string[] fieldValues) { var flt = new FltGroupExprData(join); string field = ""; foreach (var fv in fieldValues) { if (field == "") { field = fv; } else { flt.FilterExpressions.Add(Filter.Equal(field, fv)); field = ""; } } return(flt); }
/// <summary> /// create a group filter that will parse by query builder to a "filter1 [andOr] filter2 [andOr] filter3...." clause /// </summary> /// <param name="field"></param> /// <param name="value"></param> /// <returns></returns> public static FilterExpressionData Group(eAndOrJoin andOr, params FilterExpressionData[] filters) { return(new FltGroupExprData(andOr, filters)); }
public static FilterExpressionData JoinFilters(eAndOrJoin andOrJoin, params FilterExpressionData[] filters) { List<FilterExpressionData> lFilters = filters.Distinct<FilterExpressionData>().ToList<FilterExpressionData>(); lFilters.RemoveAll(item => item == null); if (lFilters.Count == 0) return new FltGroupExprData(andOrJoin); //return empty and group filter if (lFilters.Count == 1) return lFilters[0].Clone(); //return the only provided filter FltGroupExprData groupFilter = null; foreach (var flt in lFilters)//check if in collection already exist an and filter { if (flt is FltGroupExprData) { groupFilter = flt as FltGroupExprData; if (groupFilter.AndOr == andOrJoin) break; else groupFilter = null; } } if (groupFilter == null) return Filter.And(new FltGroupExprData(andOrJoin, lFilters.ToArray())); else //if yes, add to him the rest expression and return it. { lFilters.Remove(groupFilter); groupFilter = groupFilter.Clone() as FltGroupExprData; foreach (var flt in lFilters) { if (!groupFilter.FilterExpressions.Contains(flt)) groupFilter.FilterExpressions.Add(flt.Clone()); } return groupFilter; } }
public static FilterExpressionData GroupEqual(eAndOrJoin join, params string[] fieldValues) { var flt = new FltGroupExprData(join); string field = ""; foreach (var fv in fieldValues) { if (field == "") { field = fv; } else { flt.FilterExpressions.Add(Filter.Equal(field, fv)); field = ""; } } return flt; }
/// <summary> /// create a group filter that will parse by query builder to a "filter1 [andOr] filter2 [andOr] filter3...." clause /// </summary> /// <param name="field"></param> /// <param name="value"></param> /// <returns></returns> public static FilterExpressionData Group(eAndOrJoin andOr, params FilterExpressionData[] filters) { return new FltGroupExprData(andOr, filters); }
public FltFlatGroupExprData(eAndOrJoin andOr) { FieldFilters = new Dictionary<string, FltAtomExprData>(); this.AndOr = andOr; }
public FltFlatGroupExprData(eAndOrJoin andOr) { FieldFilters = new Dictionary <string, FltAtomExprData>(); this.AndOr = andOr; }
public FltGroupExprData(eAndOrJoin andOr) { this.AndOr = andOr; FilterExpressions = new List <FilterExpressionData>(); }
public FltGroupExprData(eAndOrJoin andOr) { this.AndOr = andOr; FilterExpressions = new List<FilterExpressionData>(); }