Pass Expression Tree as Method parameter
I have a function:

    public void Execute(Expression<Action> expression)
        {
            var time = expression.Compile().Benchmark();

            var msg = string.Format("{0} took {1} to complete", ReflectionHelper.GetComponentCallDetails().ToString(), time.ToString(@"hh\:mm\:ss\.ff"));

            Logger.Info(msg);
        }
The delegate that needs to be called is something like:

    channels = GetAllChannelsImpl(maxResults);
I am relatively new to Expression Trees and cannot figure out a way to pass the Action delegate to the method.

I was able to do the same functionality using 

    public void Execute(Action action)
        {
            var time = action.Benchmark();

            var msg = string.Format("{0} took {1} to complete", ReflectionHelper.GetComponentCallDetails().ToString(), time.ToString(@"hh\:mm\:ss\.ff"));

            Logger.Info(msg);
        }
and calling as

                Execute(() =>
            {
                channels = GetAllChannelsImpl(maxResults);
            });
But I wanted to use the Expression Tree based approach in order to eliminate the need to use the overhead of reflection to figure out the details of the method invoked to log it.

Can anyone suggest the right way to pass the expression tree for the above action delegate as a method parameter.
Pass Expression Tree as Method parameter
===

I have a function:

    public void Execute(Expression<Action> expression)
        {
            var time = expression.Compile().Benchmark();

            var msg = string.Format("{0} took {1} to complete", ReflectionHelper.GetComponentCallDetails().ToString(), time.ToString(@"hh\:mm\:ss\.ff"));

            Logger.Info(msg);
        }
The delegate that needs to be called is something like:

    channels = GetAllChannelsImpl(maxResults);
I am relatively new to Expression Trees and cannot figure out a way to pass the Action delegate to the method.

I was able to do the same functionality using 

    public void Execute(Action action)
        {
            var time = action.Benchmark();

            var msg = string.Format("{0} took {1} to complete", ReflectionHelper.GetComponentCallDetails().ToString(), time.ToString(@"hh\:mm\:ss\.ff"));

            Logger.Info(msg);
        }
and calling as

                Execute(() =>
            {
                channels = GetAllChannelsImpl(maxResults);
            });
But I wanted to use the Expression Tree based approach in order to eliminate the need to use the overhead of reflection to figure out the details of the method invoked to log it.

Can anyone suggest the right way to pass the expression tree for the above action delegate as a method parameter.