public T Execute <T>(Expression expression)
        {
            var actualType = typeof(T);
            var typename   = actualType.Name;

            var listType = typeof(T).GetGenericType() ?? typeof(T);
            var visitor  = new ODataExpressionVisitor();

            visitor.Visit(expression);

            var query   = visitor.GetQuery();
            var results = Invoker.InvokeGenericMethod("Get", listType, query);

            if (results == null)
            {
                var type = typeof(List <>).MakeGenericType(listType);

                results = Activator.CreateInstance(type).As <List <T> >();
            }

            if (typeof(T).IsCollection())
            {
                return((T)results);
            }

            return(results.As <IEnumerable <T> >().FirstOrDefault());
        }
        public object Execute(Expression expression)
        {
            var visitor = new ODataExpressionVisitor();

            visitor.Visit(expression);

            throw new NotImplementedException();
            //return null;// Invoker.Get(visitor.GetQuery());
        }