public static IEnumerable <TR> MapList <T, TR>(this IEnumerable <T> lst) where T : class where TR : class
        {
            Expression <Func <T, TR> > expression = ExpressionStore.GetExpression <T, TR>();

            if (lst is IQueryable <T> )
            {
                ((IQueryable <T>)lst).Select(expression).ToList();
            }
            return(lst.Select(expression.Compile()).ToList());
        }
        public ListOptions <T> ToModelGetOptions(LoadOptions posted, bool ignoreFilters = false)
        {
            ListOptions <T> opts = new ListOptions <T>();

            opts.Skip       = posted.Skip;
            opts.Showing    = posted.Showing;
            opts.SearchTerm = posted.SearchTerm;
            SortDir dir;

            if (Enum.TryParse(posted.Direction, out dir))
            {
                opts.Direction = dir;
            }

            opts.OrderProperty = posted.OrderProperty;

            if (posted.Filters != null && !ignoreFilters)
            {
                opts.Filters = ToFilterExpressions(posted.PropertyFilters);
            }

            if (!string.IsNullOrEmpty(posted.SearchTerm))
            {
                var ex = ExpressionStore.GetSearchExpression <T>(posted.SearchTerm);
                if (ex != null)
                {
                    opts.AddFilter(ex);
                }
                else if (typeof(T).Implements(typeof(INamed)))
                {
                    Expression <Func <T, bool> > iex = e => ((INamed)e).Name.Contains(posted.SearchTerm);
                    opts.AddFilter(iex);
                }
            }
            return(opts);
        }
 public static IEnumerable <TR> MapList <T, TR>(this IQueryable <T> lst) where T : class where TR : class
 {
     return(lst.Select(ExpressionStore.GetExpression <T, TR>()).ToList());
 }