protected static QueryFilterClause FromLinQExpressionBody(Expression body)
 {
     if (body == null)
     {
         return(null);
     }
     return
         (QueryFilterBooleanOperator.fromBooleanExpression(body) as QueryFilterClause ??
          QueryFilterCondition.fromConditionExpression(body));
 }
        public string GetGroupDetailUrl(Type type, object model, string baseUrl = null)
        {
            if (model == null || Grouping == null || Grouping.Keys == null || Grouping.Keys.Count == 0)
            {
                return(null);
            }

            var newQuery = Clone();

            newQuery.Grouping = null;
            newQuery.Take     = null;
            newQuery.Page     = 1;
            newQuery.Skip     = 0;
            foreach (var key in Grouping.Keys)
            {
                var cond = QueryFilterCondition.FromModelAndName(type, key, model);
                if (cond == null)
                {
                    continue;
                }
                newQuery.AddFilterCondition(cond);
            }
            return(newQuery.AddToUrl(baseUrl ?? newQuery.AttachedTo?.BaseUrl));
        }