Exemple #1
0
        public static IQueryable <T> Filter <T>(this IQueryable <T> queryable, Filter filter)
        {
            if (filter != null && filter.Logic != null)
            {
                // 收集所有过滤器的平面列表
                var filters = filter.All();

                // 获取所有过滤器值作为数组(Dynamic Linq的Where方法需要)
                var values = filters.Select(f => f.Value).ToArray();

                // 创建谓词表达,例如 Field1 = @ 0 And Field2> @ 1
                string predicate = filter.ToExpression(filters);

                // 使用Dynamic Linq的Where方法过滤数据
                queryable = queryable.Where(predicate, values);
            }

            return(queryable);
        }
        public static IQueryable <T> Filter <T>(this IQueryable <T> queryable, Filter filter)
        {
            if (filter != null && filter.Logic != null)
            {
                // Collect a flat list of all filters
                var filters = filter.All();

                // Get all filter values as array (needed by the Where method of Dynamic Linq)
                var values = filters.Select(f => f.Value).ToArray();

                // Create a predicate expression e.g. Field1 = @0 And Field2 > @1
                string predicate = filter.ToExpression(filters);

                // Use the Where method of Dynamic Linq to filter the data
                queryable = queryable.Where(predicate, values);
            }

            return(queryable);
        }