void UpdateFilterExpression()
        {
            ISupportFiltering <TEntity> viewModel = this.viewModel as ISupportFiltering <TEntity>;

            if (viewModel != null)
            {
                viewModel.FilterExpression = ActiveFilterItem == null ? null : GetWhereExpression(ActiveFilterItem.FilterCriteria);
            }
        }
Пример #2
0
        void UpdateFilterExpression()
        {
            ISupportFiltering <TEntity> viewModel = this.viewModel as ISupportFiltering <TEntity>;

            if (viewModel != null && ActiveFilterItem != null)
            {
                viewModel.FilterExpression = CriteriaOperatorToExpressionConverter.GetGenericWhere <TEntity>(ActiveFilterItem.FilterCriteria);
            }
        }
Пример #3
0
        public static IQueryable <TQuery> ApplyFilter <TQuery>(this ISupportFiltering filterProvider, IQueryable <TQuery> query)
        {
            if (filterProvider.Filter == null)
            {
                return(query);
            }

            var filters   = filterProvider.Filter;
            var queryType = typeof(TQuery);

            var parameterExpression = Expression.Parameter(typeof(TQuery), "x");

            foreach (var filter in filters)
            {
                var queryProp = queryType.GetProperty(filter.MemberName);
                if (queryProp == null)
                {
                    continue;
                }

                if (queryProp.PropertyType == typeof(string))
                {
                    query = ApplyStringLikeFilter(query, parameterExpression, filter.Value, queryProp);
                }
                else if (queryProp.PropertyType.IsEnum ||
                         (queryProp.PropertyType.IsNullableType() && queryProp.PropertyType.GetTypeOfNullable().IsEnum))
                {
                    query = ApplyEnumFilter(query, parameterExpression, filter.Value, queryProp);
                }
                else
                {
                    query = ApplyPropertyTypeFilter(query, parameterExpression, filter.Value, queryProp);
                }
            }

            return(query);
        }
Пример #4
0
 public void ApplyFilter(ISupportFiltering dataSource) => dataSource.FilterAsync(DataFilter.GetFilterExpression());