And() public static method

create a group filter grouping by AND that will parse by query builder to a "filter1 AND filter2 AND filter3...." clause,
public static And ( ) : FilterExpressionData
return FilterExpressionData
コード例 #1
0
ファイル: Filter.cs プロジェクト: Farami/a7DocumentDbStudio
        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);
            }
        }
コード例 #2
0
 public static FilterExpressionData operator &(FilterExpressionData f1, FilterExpressionData f2)
 {
     return(Filter.And(f1, f2));
 }