public static ITypeSearch <T> Filter <T>(this ITypeSearch <T> query, IFilterStatementRequest request) where T : IContent
        {
            if (request?.Filters?.Items == null)
            {
                return(query);
            }
            var filterBuilder = ClientExtensions.BuildFilter <T>(SearchClient.Instance);

            filterBuilder = request.Filters.Items.Aggregate(filterBuilder, (builder, item) =>
            {
                if (item.Connector == FilterStatementConnector.And)
                {
                    return(builder.And(GetExpression <T>(item)));
                }
                else
                {
                    var expression = GetExpression <T>(item);
                    if (expression == null)
                    {
                        expression = GetExpression <T>(item);
                    }
                    return(expression == null ? builder : builder.Or(expression));
                }
            });

            if (filterBuilder.HasFilter)
            {
                query = TypeSearchExtensions.Filter(query, filterBuilder);
            }

            return(query);
        }
Ejemplo n.º 2
0
        public static ITypeSearch <TEntry> FilterByLanguage <TEntry>(this ITypeSearch <TEntry> typeSearch, IFilterStatementRequest request) where TEntry : IContent
        {
            if (request?.Filters?.Language == null)
            {
                return(typeSearch);
            }

            var suffix = request.Filters?.Language.FieldSuffix;

            return(typeSearch.FilterOnLanguages(new string[] { suffix }));
            //return TypeSearchExtensions.Filter<TEntry>(typeSearch, (TEntry p) => EPiServer.Find.Filters.Match(p.Language.Name, suffix));
        }