public static QueryFilter ToQueryFilter(this Expression expression, IPropertyDefinitionMap propertyDefinitionMap)
        {
            QueryFilterBuilder.QueryFilterBuilderVisitor queryFilterBuilderVisitor = new QueryFilterBuilder.QueryFilterBuilderVisitor(propertyDefinitionMap);
            QueryFilter filter = queryFilterBuilderVisitor.GetFilter(expression);

            return(QueryFilter.SimplifyFilter(filter));
        }
 private static SortBy ToSortBy(this OrderByClause clause, QueryFilterBuilder.QueryFilterBuilderVisitor visitor)
 {
     return(new SortBy(visitor.GetPropertyDefinition(clause.Expression), clause.Direction.ToSortOrder()));
 }
 public static IEnumerable <SortBy> ToSortBy(this IEnumerable <OrderByClause> clauses, IPropertyDefinitionMap propertyDefinitionMap)
 {
     QueryFilterBuilder.QueryFilterBuilderVisitor visitor = new QueryFilterBuilder.QueryFilterBuilderVisitor(propertyDefinitionMap);
     return(from clause in clauses
            select clause.ToSortBy(visitor));
 }