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>>>
?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With