Ejemplo n.º 1
0
        public static Expression <Func <T, bool> > BuildFiltersExp(MetadataBase metadata, FilterBase initialFilter, List <LogicalFilter> logicalFilters)
        {
            if (metadata == null)
            {
                throw new ArgumentNullException(nameof(metadata));
            }
            if (initialFilter == null)
            {
                throw new ArgumentNullException(nameof(initialFilter));
            }

            ParameterExpression paramExp = Expression.Parameter(typeof(T), "parameter");

            Expression exp = initialFilter.GetExpression(paramExp, metadata);

            if (logicalFilters != null)
            {
                foreach (LogicalFilter logicalFilter in logicalFilters)
                {
                    exp = logicalFilter.GetExpression(exp, paramExp, metadata);
                }
            }

            var predicate = Expression.Lambda <Func <T, bool> >(exp, paramExp);

            return(predicate);
        }