public FilterPageSortOptionsBuilder ParsePaging(IEnumerable <KeyValuePair <string, string> > querystring, int start = 0, int rows = 50)
        {
            if (this.fps == null)
            {
                this.fps = new FilterPageSortOptions();
            }

            var startqs = querystring.Where(_ => _.Key == "start").FirstOrDefault();

            if (int.TryParse(startqs.Value, out int startqsVal))
            {
                start = startqsVal;
            }

            var rowsqs = querystring.FirstOrDefault(_ => _.Key == "rows");

            if (int.TryParse(rowsqs.Value, out int rowsqsVal))
            {
                rows = rowsqsVal;
            }

            fps.Paging = new PagingOptions()
            {
                Start = start, Rows = rows
            };

            return(this);
        }
        /// <summary>
        /// Use this by calling Request.GetQueryNameValuePairs() for first parameter.  This method will filter out start,rows,sort query string values.
        /// </summary>
        /// <param name="GetQueryNameValuePairs"></param>
        /// <returns></returns>
        public FilterPageSortOptionsBuilder ParseFiltering(IEnumerable <KeyValuePair <string, string> > querystring, params string[] ignoreKeys)
        {
            if (this.fps == null)
            {
                this.fps = new FilterPageSortOptions();
            }

            var qs = querystring.Where(_ =>
                                       _.Key.Equals("start", StringComparison.OrdinalIgnoreCase) == false &&
                                       _.Key.Equals("rows", StringComparison.OrdinalIgnoreCase) == false &&
                                       _.Key.Equals("sort", StringComparison.OrdinalIgnoreCase) == false &&
                                       _.Key != ""
                                       );

            this.fps.Filters = new FilterOptionsParser().Parse(qs, ignoreKeys);
            return(this);
        }
        public FilterPageSortOptionsBuilder ParseSorting(IEnumerable <KeyValuePair <string, string> > querystring)
        {
            if (this.fps == null)
            {
                this.fps = new FilterPageSortOptions();
            }

            var sortqs = querystring.Where(_ => _.Key == "sort").FirstOrDefault();

            if (sortqs.Value != null)
            {
                var sortOptions = new SortOptionsParser().Parse(querystring.First(_ => _.Key == "sort").Value);
                fps.Sort = sortOptions;
            }
            else
            {
                fps.Sort = new SortOption[0];
            }

            return(this);
        }