Extracting Func<> from Expression<>
c#, func, linq-expressions
Solution
You can use the `Compile` method to turn any `Expresstion<TDelegate>` into a `TDelegate`.
There is no way to convert a delegate into an `Expression<TDelegate>`. The detailed information about what makes up the expression was lost when it was compiled into a delegate.
You could, in theory create an expression who's body does nothing but invoke the given delegate, by doing something like this:
Func<int> function = () => 42;
Expression<Func<int>> expression = () => function();
but such an expression isn't really useful. There really isn't any meaningful information inside of that expression. So while it's technically possible, it's never really practical.
Problem
I wanna extract the Func<> from the following Expression : ``` Expression<Func<IQueryable<Entity>, IOrderedQueryable<Entity>>> order = q => q.OrderByDescending(c=>c.FullName); Func<IQueryable<Entity>, IOrderedQueryable<Entity>> orderFunc = ? ``` How can I do it? Edit : And how can we convert `Func<IQueryable<Entity>, IOrderedQueryable<Entity>>` to `Expression<Func<IQueryable<Entity>, IOrderedQueryable<Entity>>>` ?