public static NestedFilter BuildNestedFilter(DataModel.Search.Sort.NestedFilter nestedFilter) { NestedFilter.Builder builder = NestedFilter.CreateBuilder(); builder.SetPath(nestedFilter.Path); builder.SetFilter(SearchQueryBuilder.BuildQuery(nestedFilter.Query)); return(builder.Build()); }
public static ITypeSearch <TSource> Filter <TSource, TListItem>(this ITypeSearch <TSource> search, Expression <Func <TSource, NestedList <TListItem> > > nestedExpression, Expression <Func <TListItem, Filter> > filterExpression) { search.ValidateNotNullArgument("search"); nestedExpression.ValidateNotNullArgument("nestedExpression"); filterExpression.ValidateNotNullArgument("filterExpression"); var path = search.Client.Conventions.FieldNameConvention.GetFieldName(nestedExpression); if (!path.EndsWith("$$nested")) { throw new ArgumentException(string.Format("{0} is not a nested object.", nestedExpression.GetReturnType().Name)); } var parser = new FilterExpressionParser(search.Client.Conventions); var filter = parser.GetFilter(filterExpression); PrependPathOnNestedFilters(path, filter); var nestedFilter = new NestedFilter(path, filter); return(search.Filter(nestedFilter)); }