我想从以下表达式中提取 Func :
Expression<Func<IQueryable<Entity>, IOrderedQueryable<Entity>>> order = q => q.OrderByDescending(c=>c.FullName);
Func<IQueryable<Entity>, IOrderedQueryable<Entity>> orderFunc = ?
我该怎么做?
Edit :
我们如何转换Func<IQueryable<Entity>, IOrderedQueryable<Entity>>
to Expression<Func<IQueryable<Entity>, IOrderedQueryable<Entity>>>
?
您可以使用Compile
方法来转动任何Expresstion<TDelegate>
into a TDelegate
.
没有办法将委托转换为委托Expression<TDelegate>
。当将表达式编译为委托时,有关表达式组成部分的详细信息会丢失。
理论上,您可以创建一个表达式,其主体除了调用给定的委托外什么都不做,方法如下:
Func<int> function = () => 42;
Expression<Func<int>> expression = () => function();
但这样的表达其实并没有多大用处。该表达式中确实没有任何有意义的信息。因此,虽然这在技术上是可行的,但它从来没有真正实用过。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)